![](/img/trans.png)
[英]Slow image(frame) grabbing from video with OpenCV's VideoCapture and Python
[英]Grabbing Analog video into python using opencv
好吧,看來我的問題以前曾被問過很多次,但不幸的是,沒有人回答。 希望有人能幫上忙。
我有一個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:\\ Users \\ DELL \\ Desktop \\ code \\ cam.py”,cv2.imshow('frame',frame)中的第10行錯誤:...... src \\ opencv \\ modules \\ highgui \\ src \\ window.cpp:261:錯誤:(-215)size.width> 0 && size.height> 0“
請注意,除0以外的任何數字都會使程序顯示網絡攝像頭圖像。 因此,如果我嘗試使用cap = cv2.CaptureVideo(1)
,它將顯示網絡攝像頭, cap = cv2.CaptureVideo(20)
相同。
我還嘗試在VideoCapture
構造函數中輸入“ SMI Grabber Device”而不是0或1,但這沒有任何區別。
我正在使用Windows 8,並且已經安裝了Easycap隨附的驅動程序。 驅動程序附帶的軟件(稱為ULead)可以正常工作,並顯示CCTV攝像機視頻。 我試圖在關閉該程序時顯示圖像,但沒有顯示,結果是一樣的。
我Aforge庫中的C#程序,它收到使用getCamList
方法或一些東西,讓我選擇我想從一個ComboBox顯示特定設備。 我找不到類似的功能是opencv。
我正在使用OpenCV 2.4.6。 我沒有在以前的版本上嘗試過該代碼。
我真的很想了解為什么這段代碼不起作用,因為我只是opencv和圖像處理的初學者。
我希望有人能幫幫忙。
我也在使用EasyCAP。 您必須檢查ret為True。
我在下面的代碼中使用
while True:
ret, frame = vc.read()
if ret:
break
cv2.waitKey(10)
h, w = frame.shape[:2]
print h, w
while True:
ret, frame = vc.read()
if ret:
cv2.imshow(WID, frame)
if cv2.waitKey(1) == 27:
break
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.