簡體   English   中英

使用opencv將模擬視頻捕獲到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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM