Moh*_*kar 6 c++ camera opencv video-capture
我正在尝试测试一个非常简单的程序来使用相机捕获视频,但窗口似乎总是黑色的。相机的LED亮了,程序编译好了。
#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;
}
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题,我发现卡巴斯基阻止了对我相机的访问。如果您打开 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);
Run Code Online (Sandbox Code Playgroud)
在cameraFrame上执行imshow。
- 如果仍然出现黑屏,请替换stream1.read(cameraFrame);为stream1>>cameraFrame;
如果您现在可以看到视频,则意味着 OpenCV highgui 配置正确,并且您使用的相机可能存在问题。
通常,主摄像头驱动程序不会授予对第三方库(本例中为 OpenCV)的访问权限。VideoCapture stream1(0)用。。。来代替VideoCapture stream1(1)。现在,这将指向机器的基本凸轮驱动程序,而不是主凸轮驱动程序。
如果黑屏仍然存在,我建议如果可能的话使用外部网络摄像头进行测试,问题可能出在摄像头硬件本身
| 归档时间: |
|
| 查看次数: |
5902 次 |
| 最近记录: |