附錄D:Python 添加 opencv-python庫(kù):win7+python3.6+opencv3.4.1


時(shí)間:2018-10-10 作者:魏文應(yīng)


一、說 明

在 win10 上惧笛,安裝其實(shí)是非常簡(jiǎn)單的从媚,只需:

pip install opencv-python

或者,使用 conda 方式安裝:

conda install opencv

這樣就可以正常添加 opencv 庫(kù)了患整。很可惜拜效,win7 上不行,會(huì)出現(xiàn)以下問題:

>>> import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: DLL load failed: 找不到指定的模塊各谚。
>>>

提示找不到相應(yīng)的 DLL 動(dòng)態(tài)庫(kù)紧憾。事實(shí)上,這可以說是 pip 官方或者 anaconda 官方?jīng)]有解決的 bug 昌渤,導(dǎo)致給添加 opencv 帶來(lái)困難赴穗。網(wǎng)上給出了一些方案,但不太可行(后面我會(huì)分析相應(yīng)方案)膀息。下面是本次測(cè)試的安裝環(huán)境:

  • windows 操作系統(tǒng)版本: windows 7 旗艦版 SP1 64位 般眉。
  • anaconda 版本: anaconda5.3 支持python3.x.x
  • conda 版本: conda4.5.11 潜支。
  • python 版本: python3.6.6 windows 64位 甸赃。
  • opencv 版本: opencv3.4.1

安裝之前冗酿,應(yīng)確保電腦安裝有以下軟件:

  • 保持較新版本的 .NET Framework 埠对。
  • 安裝有 Microsoft Visual C++ 2015 Redistributable(x64) 络断。
  • 安裝有補(bǔ)丁 KB2999226點(diǎn)擊此處下載)。

官方參考文檔

下面鸠窗,給出 pip 官方參考和 conda 官方參考(但 win7 上直接安裝不一定可行妓羊,僅供參考):

這兩個(gè)官方文檔,在 win10 上安裝是沒有問題的裕循,在 win7 上安裝目前(2018-10-10)是不行的臣嚣。

二、安裝 opencv-python

成功的方案

這里剥哑,先給出我測(cè)試成功的方案步驟硅则。你可以先創(chuàng)建一個(gè)環(huán)境進(jìn)行測(cè)試,如果這個(gè)環(huán)境 測(cè)試通過 了株婴,再在你的目標(biāo)環(huán)境中添加 opencv-python 庫(kù):

conda create -n mytest pip python=3.6

進(jìn)入這個(gè)環(huán)境中:

activate mytest

執(zhí)行下面命令怎虫,添加 opencv-python 庫(kù)(可用版本3.4.13.3.0困介、3.2.0 大审,點(diǎn)擊這查看相關(guān)版本):

conda install -c conda-forge opencv=3.4.1

-c 指定遠(yuǎn)程倉(cāng)庫(kù)地址,默認(rèn)是 anaconda 官網(wǎng) 座哩。opencv=3.4.1 指定了版本是 3.4.1 徒扶,如果不知道版本,就使用最新版本根穷,目前(2018-10-10)最新版本是 3.4.3姜骡。注意:必須指定版本,最新版本在win7不可用屿良。然后測(cè)試是否添加 opencv-python成功了:

python

進(jìn)入 python 交互環(huán)境以后圈澈,導(dǎo)入 opencv :

import cv2

如果沒有錯(cuò)誤提示,說明添加 opencv-python 成功了:

這里是 tensorlfow2 環(huán)境測(cè)試(和 test 起名不一樣而已)

有問題的方案

如果直接使用官方給出的命令:

conda install -c conda-forge opencv

或者是

conda install -c conda-forge/label/broken opencv

在 anaconda 的 base 環(huán)境中沒有問題尘惧,但是康栈,在我們自己通過 conda creat 命令創(chuàng)建的環(huán)境中,同樣會(huì)出現(xiàn) ImportError: DLL load failed: 找不到指定的模塊褥伴。 的問題谅将。

三、網(wǎng)上相應(yīng)方案

注意:這些都是不可行的方案重慢。 這些是網(wǎng)上提及比較多的方法饥臂,但 都不可行胰锌,我測(cè)試的結(jié)果是魂莫,依然出錯(cuò)。

使用 depends.exe 工具

這個(gè)工具蘸鲸,可用來(lái)查 windows 程序 DLL 動(dòng)態(tài)庫(kù)的依賴關(guān)系的。到 depends.exe 的 官網(wǎng) 下載這個(gè)工具:

http://www.dependencywalker.com/

下載之后囚戚,解壓下載的壓縮包酵熙,直接打開 depends.exe 這個(gè)軟件。打開之后驰坊,依次點(diǎn)擊 file -> open匾二,并找到 opencv-python 的 .pyd 文件。我這里的環(huán)境名稱為 tensorflow 拳芙,那么這個(gè)文件就在下面目錄中(根據(jù)你自己 anaconda 的安裝目錄而定):

D:\ProgramData\Anaconda3\envs\tensorflow\Lib\site-packages

找到 cv2 的 .pyd 文件
自動(dòng)需找依賴關(guān)系

這樣察藐,就顯示缺了哪些包,但是舟扎,這樣并不可靠分飞。(比如這里,我的 opencv 是正常的睹限,但從圖中你可以看出譬猫,它給我報(bào)了一大堆錯(cuò)誤)。將缺的 DLL 包羡疗,下載下來(lái)染服,放到 C:\Windows\SysWOW64 中。注意:事實(shí)上顺囊,這種做法不可取肌索,你想啊,每次都這么搞特碳,豈不是很麻煩诚亚?版本更新了呢?顯然不科學(xué)午乓。

升級(jí)補(bǔ)丁

操作系統(tǒng)補(bǔ)丁是要的站宗,最重要的是補(bǔ)丁 KB2999226 ,不過這個(gè)補(bǔ)丁一般都有益愈。

移動(dòng) DLL 文件

有很多人說梢灭,把 cv2 文件移到 Lib 文件夾下,那都是扯淡蒸其。

安裝 opencv-contrib-python

有人說將 pip install opencv-python 換成 pip install opencv-contrib-python 敏释,說什么自動(dòng)安裝依賴,那是扯淡摸袁。opencv-contrib-python 這個(gè)庫(kù)钥顽,是在 opencv 的基礎(chǔ)上,加了其它庫(kù)靠汁,比如 臉部識(shí)別等蜂大。

四闽铐、總 結(jié)

在 windows 上使用 opencv-python 庫(kù)的用戶,win10 用戶目前問題不大奶浦。win7 用戶主要是提示缺少 DLL 動(dòng)態(tài)庫(kù)的問題兄墅,根本問題 是:

pip install opencv-python 或者 conda install -c conda-forge opencv ,默認(rèn)安裝的是最新版本的opencv澳叉。但是隙咸,最新版本的 opencv ,在 win7 上往往出現(xiàn) DLL 動(dòng)態(tài)庫(kù)缺失的錯(cuò)誤成洗。

規(guī)避這個(gè)錯(cuò)誤的根本方法是:

回退到前面的穩(wěn)定版本

比如扎瓶,如果 conda install -c conda-forge opencv=3.4.3 不行,那么可以使用 conda install -c conda-forge opencv=3.4.1 版本泌枪,直到退到可用為止。怎么知道有哪些版本呢秕岛?去 anaconda 官網(wǎng)搜索 opencv 碌燕,上面的 -c 參數(shù)后面可以加一個(gè)遠(yuǎn)程倉(cāng)庫(kù)地址,如果后面沒有相關(guān)網(wǎng)址继薛,則默認(rèn)使用 anaconda 官方地址修壕。 conda-forge 是用戶名,這個(gè)用戶上傳了相應(yīng)的 opencv 版本到 anaconda 這個(gè)網(wǎng)站上:

  • 找到你認(rèn)為合適的版本

在這上面找到你認(rèn)為合適的版本遏考,并使用 conda install -c conda-forge opencv=3.4.1 命令安裝它即可慈鸠。一般新版本會(huì)有問題,老版本的問題會(huì)少得多灌具。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末青团,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子咖楣,更是在濱河造成了極大的恐慌督笆,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诱贿,死亡現(xiàn)場(chǎng)離奇詭異娃肿,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)珠十,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門料扰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人焙蹭,你說我怎么就攤上這事晒杈。” “怎么了壳嚎?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵桐智,是天一觀的道長(zhǎng)末早。 經(jīng)常有香客問我,道長(zhǎng)说庭,這世上最難降的妖魔是什么然磷? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮刊驴,結(jié)果婚禮上姿搜,老公的妹妹穿的比我還像新娘。我一直安慰自己捆憎,他們只是感情好舅柜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著躲惰,像睡著了一般致份。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上础拨,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天氮块,我揣著相機(jī)與錄音,去河邊找鬼诡宗。 笑死滔蝉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的塔沃。 我是一名探鬼主播蝠引,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蛀柴!你這毒婦竟也來(lái)了螃概?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤名扛,失蹤者是張志新(化名)和其女友劉穎谅年,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肮韧,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡融蹂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了弄企。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片超燃。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖拘领,靈堂內(nèi)的尸體忽然破棺而出意乓,到底是詐尸還是另有隱情,我是刑警寧澤约素,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布届良,位于F島的核電站笆凌,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏士葫。R本人自食惡果不足惜乞而,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望慢显。 院中可真熱鬧爪模,春花似錦、人聲如沸荚藻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)应狱。三九已至共郭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間疾呻,已是汗流浹背落塑。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留罐韩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓污朽,卻偏偏與公主長(zhǎng)得像散吵,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蟆肆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353