時(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 上直接安裝不一定可行妓羊,僅供參考):
- pypi.org 官方說明: https://pypi.org/project/opencv-python/ 。
- conda 官方說明: https://anaconda.org/conda-forge/opencv 稍计。
這兩個(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.1
、3.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 成功了:
有問題的方案
如果直接使用官方給出的命令:
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è)工具:
下載之后囚戚,解壓下載的壓縮包酵熙,直接打開 depends.exe
這個(gè)軟件。打開之后驰坊,依次點(diǎn)擊 file -> open
匾二,并找到 opencv-python 的 .pyd
文件。我這里的環(huán)境名稱為 tensorflow 拳芙,那么這個(gè)文件就在下面目錄中(根據(jù)你自己 anaconda 的安裝目錄而定):
D:\ProgramData\Anaconda3\envs\tensorflow\Lib\site-packages
這樣察藐,就顯示缺了哪些包,但是舟扎,這樣并不可靠分飞。(比如這里,我的 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)為合適的版本遏考,并使用 conda install -c conda-forge opencv=3.4.1
命令安裝它即可慈鸠。一般新版本會(huì)有問題,老版本的問題會(huì)少得多灌具。