在 Win10 或 win7 系統中用 python 3.7.6 執行 import cv2 的時候,往往提示找不到指定的模塊。其實找不到的不是 cv2 這個模塊,而是 opencv-python 模塊。很多教程說 pip install opencv-python 之後,就可以 import cv2 成功。但是,事實證明在Windows系統中,這是解決不了問題的。
還有人說,先把 wheel 文件下載下來再安裝就行了
(
下載地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv
)實踐證明,也不可取。
所以,要解決的問題是在Windows7、10系統下import cv2失敗。
我的Python版本:3.7.6
機緣巧合之下,我找到了這麼一種方法,依次輸入以下命令就可以了:
pip install --upgrade setuptools --trusted-host mirrors.aliyun.com -i https://mirrors.aliyun.com/pypi/simple/
這是更新 setuptools 的操作,其中 --trusted-host mirrors.aliyun.com -i https://mirrors.aliyun.com/pypi/simple/ 是設置信任主機和鏡像服務器的操作,從域名上看,這是阿里雲鏡像服務器的地址。使用阿里雲鏡像服務器明顯要比官方地址快的多。(以下其他命令也使用了同樣的辦法)
pip install numpy Matplotlib --trusted-host mirrors.aliyun.com -i https://mirrors.aliyun.com/pypi/simple/
這是安裝 numpy 和 Matplotlib 庫的操作。
pip install opencv-python --trusted-host mirrors.aliyun.com -i https://mirrors.aliyun.com/pypi/simple/
這是安裝 opencv-python 庫。
接下來我們安裝 opencv-contrib-python 庫(OpenCV將很多算法安裝到了opencv-contrib內):
下面我們貼一段 Kivy 調用攝像頭的代碼:
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
import time
Builder.load_string('''
<CameraClick>:
orientation: 'vertical'
Camera:
id: camera
resolution: (640, 480)
play: False
ToggleButton:
text: 'Play'
on_press: camera.play = not camera.play
size_hint_y: None
height: '48dp'
Button:
text: 'Capture'
size_hint_y: None
height: '48dp'
on_press: root.capture()
''')
class CameraClick(BoxLayout):
def capture(self):
'''
Function to capture the images and give them the names
according to their captured time and date.
'''
camera = self.ids['camera']
timestr = time.strftime("%Y%m%d_%H%M%S")
camera.export_to_png("IMG_{}.png".format(timestr))
print("Captured")
class Camera(App):
def build(self):
return CameraClick()
Camera().run()
運行結果如下:
如果 opencv-python 沒有安裝好,會報“找不到 camera 提供者”之類的錯誤。