Win10+Anaconda3環境下的OpenCV4.0-Python安裝教程

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,還有兩個版本是alphabeta。我下載了4.0.04.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.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章