簡體   English   中英

外部網絡攝像頭不適用於 Opencv 和 Python

[英]External Webcam not working for Opencv and Python

我正在使用 Python cv2 模塊來運行程序。

我可以訪問內置網絡攝像頭,但是當我使用外部網絡攝像頭時,它不起作用。

我已經使用了所有代碼,例如

VideoCapture(1) # or any other no.s like 0,1,2,3 etc etc.

我什至使用設備管理器禁用了內置網絡攝像頭。

但沒有任何效果。 我正在使用 pythonxy。 我也試過在命令提示符下。 它仍然不起作用。

我收到以下錯誤

runfile('C:/Users/Prashant/Documents/Python Scripts/Circledetection.py',     wdir=r'C:/Users/Prashant/Documents/Python Scripts')
OpenCV Error: Assertion failed (scn == 3 || scn == 4) in unknown function, file ..\..\..\modules\imgproc\src\color.cpp, line 3402
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 540, in runfile
    execfile(filename, namespace)
  File "C:/Users/Prashant/Documents/Python Scripts/Circledetection.py", line 27, in <module>
    prev_gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
cv2.error: ..\..\..\modules\imgproc\src\color.cpp:3402: error: (-215) scn == 3 || scn == 4

你提到VideoCapture(0)VideoCapture(1)
“1”表示外部攝像機編號。

import cv2
import numpy as np

cap = cv2.VideoCapture(1) 
while(1):
    ret, frame = cap.read()
    #print(height)
    #cv2.imshow("Cropped Image", crop_img)
    #gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

該斷言意味着您的圖像沒有 3 個(RGB、BGR 等)通道或 4 個通道(3 個通道 + alpha)。 顯然,這可能是由根本不存在的圖像引起的。

雖然這可能是因為您的相機不工作,但同樣有可能您的相機沒有為前幾個 read() 提供可用的幀,因為它仍在“准備”自己。

解決這個問題的最簡單方法,假設您使用類似retv, frame = cam.read()是檢查if frame:if retv:

如果沒有圖像,讓它跳過你的處理,在幾幀內你應該有可讀的輸入。

您確定您使用的是正確的索引嗎? 使用Videocapture您還可以嘗試使用Videocapture(-1) ,因為外部攝像頭有時會顯示為輸入列表中的最后一個元素。 Videocapture還可以返回設備名稱,因此您可以嘗試遍歷輸入設備索引列表並打印它們的“友好名稱”,以確保您使用的是正確的名稱。

OpenCV 需要以下依賴項才能與 USB 攝像頭配合使用。 從以下命令安裝依賴項:

  • libav 視頻輸入/輸出開發庫

    sudo apt-get install libavformat-dev libavutil-dev libswscale-dev
  • Video4Linux 相機開發庫

    sudo apt-get install libv4l-dev
  • OpenGL 開發庫(允許創建圖形窗口)

     sudo apt-get install libglew-dev
  • GTK 開發庫(允許創建圖形窗口)

     sudo apt-get install libgtk2.0-dev

謝謝它對我有用。

OpenCV 需要以下依賴項才能與 USB 攝像頭配合使用。 從以下命令安裝依賴項:

libav 視頻輸入/輸出開發庫

sudo apt-get install libavformat-dev libavutil-dev libswscale-dev Video4Linux 相機開發庫

sudo apt-get install libv4l-dev OpenGL 開發庫(允許創建圖形窗口)

sudo apt-get install libglew-dev GTK 開發庫(允許創建圖形窗口)

sudo apt-get install libgtk2.0-dev

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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