簡體   English   中英

黑屏視頻捕獲opencv

[英]black screen video capture opencv

我正在嘗試測試一個非常簡單的程序來使用相機捕獲視頻,但似乎窗口總是黑色的。 攝像頭的燈亮了,程序編譯就好了。

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>

using namespace cv; 
using namespace std;

int main() {
VideoCapture stream1(0);   //0 is the id of video device.0 if you have only one camera.

if (!stream1.isOpened()) { //check if video device has been initialised
    cout << "cannot open camera";
}

//unconditional loop
while (true) {
    Mat cameraFrame;
    stream1.read(cameraFrame);
    imshow("cam", cameraFrame);
    if (waitKey(30) >= 0)
        break;
}
system("pause");
return 0;
}

我遇到了同樣的問題,我發現卡巴斯基阻止了對我的相機的訪問。 如果您打開 Kapresky 並轉到“報告”,然后轉到“高級線程保護”選項卡下的“主機入侵防護”列,您可以查看它是否阻止了您的攝像頭。

如果這是問題所在,您可以轉到Settings -> General Settings -> Exclusions -> Scan exclusions and trusted applications ,然后單擊Settings 然后轉到Trusted Applications tab並單擊Add -> Applications 搜索Python並單擊確定並選中所有框。 單擊確定,然后保存,它應該可以工作。

要縮小問題的根源,您可以按照以下步驟進行操作:

  • 檢查 OpenCV highgui 是否配置正確。 使用捕獲保存的視頻

    VideoCapture stream1("video.avi"); stream1.read(cameraFrame);

    在 cameraFrame 上執行 imshow。

-如果還是黑屏,更換stream1.read(cameraFrame); stream1>>cameraFrame; 如果您現在可以看到您的視頻,則意味着 OpenCV highgui 配置正確,並且您使用的相機可能存在問題。

  • 通常,主相機驅動程序不會授予對第三方庫(在本例中為 OpenCV)的訪問權限。 VideoCapture stream1(0)替換為VideoCapture stream1(1) 現在這將指向您機器的基本凸輪驅動程序,而不是主凸輪驅動程序。

  • 如果黑屏仍然存在,如果可能的話,我建議使用外部網絡攝像頭進行測試,問題可能出在相機硬件本身

遇到類似的問題(但使用Python)。 Saransh Kejriwa 的評論對 DSHOW 有效。 萬一有人偶然發現:

fourcc = cv2.VideoWriter_fourcc('M','J','P','G')
cap = cv2.VideoCapture()
cap.open(1 + cv2.CAP_DSHOW)
cap.set(cv2.CAP_PROP_FOURCC, fourcc)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
cap.set(cv2.CAP_PROP_FPS, 60)

我遇到了同樣的問題,在嘗試了所有解決方案后,我發現我的網絡攝像頭分辨率更高。

通過將 1280 * 720 更改為 640 * 480 來修復它。

我有同樣的問題,並通過替換解決了

 if (waitKey(30) >= 0)
     break;

 if( (char)waitKey(10) == 'q' )
     break;

暫無
暫無

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

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