1. 程式人生 > >【談談那些跳過的坑】Anaconda環境已安裝TensorFlow情況下安裝OpenCV

【談談那些跳過的坑】Anaconda環境已安裝TensorFlow情況下安裝OpenCV

由於個人需要,安裝TensorFlow後還需要安裝OpenCV,以滿足我的需求。我在很久之前已經安裝了python、anaconda、tensorflow-gpu,目標檢測演算法中需要同時import tensorflow和cv2,因此還需在之前環境的基礎上安裝OpenCV。安裝過程中不太順利,雖說只要下載opencv再安裝上即可,但是中途還是會有一些麻煩。希望這篇博文能夠解決TFer/CVer們相似的問題。

個人PC環境:

  • Windows 10
  • Python 3.5.4/Python3.5.2
  • Anaconda3(64-bit)
  • Pycharm 2017.3

注:

  1. 由於我的Python環境是通過Anaconda安裝的,使用Anaconda安裝Python的預設版本是3.6,又因為TensorFlow最高支援py3.5,因此將python3.6換成了python3.5.4,安裝tensorflow後tensorflow中的python.exe版本是3.5.2,因此pc中存在兩個python環境。
  2. 安裝OpenCV之前需要確保已經安裝pip和numpy庫,如果是anaconda環境,則無需擔心,因此anaconda中自帶的有,但是可能需要升級版本才能順利安裝。

1 安裝pip(Anaconda可跳過)

2 安裝numpy

如果是anaconda環境,則無需安裝,但是可能會因為版本較低而導致opencv安裝失敗,博主就遇到了此類問題。報錯顯示為:

RuntimeError: module compiled against API version 0xb but this version of numpy is 0xaTraceback (most recent call last):File "<stdin>", line 1, in <module>ImportError: numpy.core.multiarray failed to import

這個錯誤就是因為numpy版本低導致的,解決方法有以下兩種:

1.執行pip install -U numpy,更新numpy庫;

2.前往numpy下載頁面下載,選擇適合自己python版本的numpy包,我的Python版本是3.5,因此找下圖中名稱含cp35的安裝包,下圖紅色框內,下載到anaconda包資料夾中,我的位置是D:\Program Files (x86)\Anaconda3\Lib\site-packages,進入到這個資料夾中,先按住shift鍵,在單擊滑鼠右鍵,彈出的選單中選擇“在此處開啟PowerShell視窗”,輸入以下程式碼即可安裝:

pip install numpy-1.15.2+mkl-cp35-cp35m-win_amd64.whl

3 安裝OpenCV

與numpy安裝過程類似,從OpenCV下載頁找到適合自己的版本下載到D:\Program Files (x86)\Anaconda3\Lib\site-packages資料夾中,shift+右鍵開啟shell並鍵入

pip install opencv_python-3.4.3-cp35-cp35m-win_amd64.whl

當出現 “Successfully installed opencv-python-3.4.3”則說明安裝成功,還可進一步做如下測試,如果沒有出錯並且執行了命令,則安裝成功:

> python
>>> import cv2
>>> print(cv2.__version__)
>>> print(cv2.__file__)

4 解決PyCharm不能匯入cv2的問題

從Pycharm--File--Settings--Project Interpreter中,我將兩個python環境命名成“python 3.5”(py 3.5.2)和“python 3.6”(其實是py3.5.4,為了便於與上一個區分,anaconda自帶安裝)

出現了一下問題:

1.如果選擇python 3.6(地址:Anaconda\python.exe),這個python是安裝anaconda自帶的,在import tensorflow是會出現找不到該模組的情況;

2.如果選擇python 3.5(地址:Anaconda\envs\tensorflow\python.exe),這個python是tf中的,但是在用的時候import cv2會出現找不到cv2模組的情況。

 

既然是寫tensorflow程式,當然要使用Anaconda\envs\tensorflow\python.exe地址下的python,因此就要解決不能匯入cv2模組的問題。

經過多次測試+百度,看了很多博主的部落格,最終找到了一款適合自己的,傳送門

在pycharm下方終端視窗中(Terminal)【注意:一定是位於tensorflow中】,輸入:

pip install opencv-python

雖然執行命令之後會提示已經安裝過opencv-python,但是這一命令執行之後便不再出現“ImportError: No module named cv2”問題。

5 測試

import os
import tensorflow
import cv2
import numpy as np

img = cv2.imread("E:/person.jpg")
cv2.imshow("person", img)

cv2.waitKey(10000)

 

程式已經正確執行並顯示,沒有出現找不到cv2或者tensorflow的錯誤,說明安裝成功。

參考:

1. python 3.6安裝opencv庫詳細教程

2. pycharm匯入cv2

3. python opencv 安裝及使用