2009-03-03 21 views
49

我想從Python訪問我的攝像頭。如何在Python中訪問我的攝像頭?

我嘗試使用VideoCapture擴展(tutorial),但是這並沒有爲我工作得非常好,我必須解決一些問題,因爲它是一個有點慢,分辨率> 320x230,有時它沒有返回None明顯的原因。

有更好的方式從Python訪問我的攝像頭嗎?

+0

請說明您需要支持哪些操作系統。 – 2009-03-03 03:04:12

+0

另請參閱:[用於拍攝相機圖像的Python庫](http://softwarerecs.stackexchange.com/q/18134/1834) – 2016-04-28 10:09:44

+0

和:[爲什麼用Python拍攝的攝像頭圖像太暗?](http:// stackoverflow .com/q/28566972/562769) – 2016-04-28 10:10:09

回答

40

OpenCV支持從網絡攝像頭獲取數據,默認情況下它帶有Python包裝,您還需要爲OpenCV Python擴展(稱爲cv2)安裝numpy才能工作。
在撰寫本文時(2015年1月)還沒有Python 3支持,因此您需要使用Python 2.

More information on using OpenCV with Python

一個例子來自Displaying webcam feed using opencv and python複製:

import cv2 

cv2.namedWindow("preview") 
vc = cv2.VideoCapture(0) 

if vc.isOpened(): # try to get the first frame 
    rval, frame = vc.read() 
else: 
    rval = False 

while rval: 
    cv2.imshow("preview", frame) 
    rval, frame = vc.read() 
    key = cv2.waitKey(20) 
    if key == 27: # exit on ESC 
     break 
cv2.destroyWindow("preview") 
-2

我使用的唯一一個是VideoCapture,你已經說過你不喜歡(雖然我與它沒有任何問題,你遇到什麼錯誤?)

我無法找到任何過去或現在的替代品,所以你可能會被卡住或者使用VideoCapture,或者找到一個很好的C庫併爲它寫一個Python包裝器(這可能比你願意投入的更多工作)。

+1

好的,編輯問題來定義我發現的問題。 – Rodrigo 2009-03-03 02:27:45

1

gstreamer可以處理攝像頭輸入。如果我記得很清楚,它有python綁定!

9

這應該已經到@約翰蒙哥馬利評論,但我的代表處不允許我做出評論。 你的回答是偉大的,但至少在Windows上,它缺少線

cv2.destroyWindow("preview") 

沒有它,相機資源被鎖定

vc.release() 

之前,不能被蟒蛇前再次捕獲控制檯被殺害。