好吧,好像我的問題之前已經被問過很多次了,不幸的是,沒有人回答。我希望有人會幫助。使用opencv抓取模擬視頻到python
我有一個Easycap設備,可以將來自我的模擬攝像頭的模擬圖像通過USB端口轉換爲數字信號。
設備在「設備管理器」中的「聲音,視頻和遊戲控制器」類別下標識爲「SMI採集卡設備」。
我使用簡單的Python代碼來顯示來自此設備的視頻。我的筆記本電腦也有嵌入式攝像頭。
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Display the resulting frame
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
if cv2.waitKey(1) & 0xFF == ord('s'):
cv2.imwrite('screenshot.jpg',frame)
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
首先,當我拔出Easycap時,CaptureVideo(0)返回嵌入式網絡攝像頭視頻流。然而,當我插上Easycap,出現了一個錯誤:
「回溯(最近最後一次通話): 文件 「C:\用戶\ DELL \桌面\代碼\ cam.py」,10號線,在 CV2 .imshow('frame',frame) 錯誤:...... \ src \ opencv \ modules \ highgui \ src \ window.cpp:261:error:(-215)size.width> 0 & & size。高度> 0「
請注意,除0以外的任何數字都會使程序顯示網絡攝像頭圖像。所以如果我試過cap = cv2.CaptureVideo(1)
,它會顯示網絡攝像頭,cap = cv2.CaptureVideo(20)
是一樣的。
我也嘗試在VideoCapture
構造函數中輸入「SMI Grabber Device」而不是0或1,但它沒有任何區別。
我使用的是Windows 8,並且我已經安裝了隨附的Easycap驅動程序。驅動程序附帶的軟件(稱爲ULead)可以正常工作並顯示閉路電視攝像機視頻。我試圖在我關閉該程序時顯示圖像,而沒有,結果是相同的。
我在一個C#程序之前使用了Aforge庫,它有getCamList
方法,或者允許我選擇想從comboBox顯示的特定設備。我找不到類似的功能是opencv。
我使用的是OpenCV 2.4.6。我沒有嘗試以前版本的代碼。
我真的需要明白爲什麼這段代碼不工作,知道我只是opencv和圖像處理的初學者。
我希望有人能幫忙。
進一步的研究之後,它似乎是一個OpenCV的錯誤。 http:// stackoverflow。com/questions/8044539/listing-available-devices-in-python-opencv –
你能解決你的問題/修正錯誤嗎? – user391339