Win10+Anaconda3環境下的OpenCV4.0-Python安裝教程
在OpenCV 3.0發佈三年半之後,OpenCV 4.0終於發佈了。我看了一下網上的教程都是利用Visual Studio對OpenCV源碼進行編譯的辦法來安裝的,繁瑣不說,還容易出錯。我嘗試了一下用編譯好的版本結合Anaconda3進行OpenCV4.0安裝,完美支持Python2.7版本,對Python3,目前還只能在...\site-packages\opencv\build\python
這個路徑下運行,還請各路大神多多指點。
創建虛擬環境
首先安裝Anaconda3,安裝步驟不再贅述,可以參考我前面的博客Windows10 GPU版Tensorflow配置教程+Anaconda3+Jupyter Notebook
安裝完之後,打開命令行,輸入以下命令,創建一個虛擬環境,在裏面亂搞是不會破壞外面配置好的環境的。環境的名字可以隨便取,我取的是opencv40
,python版本用3.5就行。
conda create -n opencv40 python=3.5
用conda env list
來查看已創建的所有環境,用activate opencv40
來激活環境,輸入conda install numpy matplotlib
安裝必要的package。如果安裝速度慢,可以Anaconda3換用國內源。
下載OpenCV 4.0.0-alpha
OpenCV的下載網址https://sourceforge.net/projects/opencvlibrary/files/,在這裏可以看到所有的發行版本。
最新的版本是OpenCV4.0,還有兩個版本是alpha
和beta
。我下載了4.0.0
和4.0.0-alpha
兩個版本。
點擊4.0.0-alpha
,選擇紅框的文件下載。
如果連接不穩定,可以用我的百度雲鏈接。
4.0.0 https://pan.baidu.com/s/1EsfQ7uS-ni1iPyKCBpG1jg
4.0.0-alpha https://pan.baidu.com/s/1sxiWvpghRX0Sp_PmJomWTg
下載完之後,雙擊打開exe文件,將其解壓到D:\Program Files\Anaconda3\envs\OpenCV40\Lib\site-packages
,這是我的Anaconda3的虛擬環境opencv40下的Python的package存放路徑。
如果你之前解壓的是4.0.0-alpha
,則進入...\site-packages\opencv\python\2.7\x64
,將cv2.pyd
複製到...\Anaconda3\envs\OpenCV40\Lib\site-packages
中。
在命令行(環境激活狀態下)進入python,如下圖可見安裝成功。
如果你之前解壓的是4.0.0
,則命令行進入...\site-packages\opencv\python\
,執行python setup.py install
,如下圖。
然後不知爲何報錯了
Traceback (most recent call last):
File "setup.py", line 57, in <module>
main()
File "setup.py", line 52, in main
'Topic :: Software Development :: Libraries',
File "D:\Program Files\Anaconda3\envs\opencv40\lib\distutils\core.py", line 151, in setup
dist.run_commands()
File "D:\Program Files\Anaconda3\envs\opencv40\lib\distutils\dist.py", line 953, in run_commands
self.run_command(cmd)
File "D:\Program Files\Anaconda3\envs\opencv40\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "D:\Program Files\Anaconda3\envs\opencv40\lib\site-packages\setuptools\command\install.py", line 67, in run
self.do_egg_install()
File "D:\Program Files\Anaconda3\envs\opencv40\lib\site-packages\setuptools\command\install.py", line 117, in do_egg_install
cmd.run()
File "D:\Program Files\Anaconda3\envs\opencv40\lib\site-packages\setuptools\command\easy_install.py", line 411, in run
self.easy_install(spec, not self.no_deps)
File "D:\Program Files\Anaconda3\envs\opencv40\lib\site-packages\setuptools\command\easy_install.py", line 642, in easy_install
with self._tmpdir() as tmpdir:
File "D:\Program Files\Anaconda3\envs\opencv40\lib\contextlib.py", line 17, in __enter__
return self.gen.next()
File "D:\Program Files\Anaconda3\envs\opencv40\lib\site-packages\setuptools\command\easy_install.py", line 631, in _tmpdir
tmpdir = tempfile.mkdtemp(prefix=six.u("easy_install-"))
File "D:\Program Files\Anaconda3\envs\opencv40\lib\tempfile.py", line 337, in mkdtemp
file = _os.path.join(dir, prefix + name + suffix)
File "D:\Program Files\Anaconda3\envs\opencv40\lib\ntpath.py", line 85, in join
result_path = result_path + p_path
UnicodeDecodeError: 'ascii' codec can't decode byte 0xbb in position 7: ordinal not in range(128)
在python3中導入cv2會爆出一個這樣的錯誤,
['D:\\Program Files\\Anaconda3\\envs\\OpenCV\\lib\\site-packages\\opencv-4.0.0-py3.5.egg\\cv2\\../../python/cv2/python-3.5', '', 'D:\\Program Files\\Anaconda3\\envs\\OpenCV\\python35.zip', 'D:\\Program Files\\Anaconda3\\envs\\OpenCV\\DLLs', 'D:\\Program Files\\Anaconda3\\envs\\OpenCV\\lib', 'D:\\Program Files\\Anaconda3\\envs\\OpenCV', 'D:\\Program Files\\Anaconda3\\envs\\OpenCV\\lib\\site-packages', 'D:\\Program Files\\Anaconda3\\envs\\OpenCV\\lib\\site-packages\\opencv-4.0.0-py3.5.egg', 'D:\\Program Files\\Anaconda3\\envs\\OpenCV\\Lib\\site-packages\\opencv']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\Program Files\Anaconda3\envs\OpenCV\lib\site-packages\opencv-4.0.0-py3.5.egg\cv2\__init__.py", line 89, in <module>
bootstrap()
File "D:\Program Files\Anaconda3\envs\OpenCV\lib\site-packages\opencv-4.0.0-py3.5.egg\cv2\__init__.py", line 79, in bootstrap
import cv2
File "D:\Program Files\Anaconda3\envs\OpenCV\lib\site-packages\opencv-4.0.0-py3.5.egg\cv2\__init__.py", line 89, in <module>
bootstrap()
File "D:\Program Files\Anaconda3\envs\OpenCV\lib\site-packages\opencv-4.0.0-py3.5.egg\cv2\__init__.py", line 23, in bootstrap
raise ImportError('ERROR: recursion is detected during loading of "cv2" binary extensions. Check OpenCV installation.')
ImportError: ERROR: recursion is detected during loading of "cv2" binary extensions. Check OpenCV installation.