我现在正在使用我的笔记本电脑的网络摄像头一直在计算机视觉项目上工作(它显示为" HD WebCam" 640x480 res)但是想要使用这个程序我的DJI-Inspire1无人机的相机。相机被识别并打开但无法从中读取图像。
更详细:
在我的播放器类加载相机功能:
capture.open(-1); // this opens a window with a combobox showing all
//the cameras i have. Selecting the DJI camera fails
//the read while selecting the webcam fails and crashes.
// capture.open(0); opens the webcam succesfully
// capture.open(1);
open(1)似乎试图打开DJI-Camera,但给出了不同的值 打开(-1)并在读取帧后崩溃(帧完全是 黑色720x480 CV_8UC3)在调试模式下,它在使用分段故障读取帧时崩溃并指向" DriverProc"的反汇编。 (我猜?)和一个带有movdqa命令的行。
// capture.open(2); oddly also seems to try and open DJI-camera now with
// 720x486 resolution resulting in a black 720x486 CV_8UC3 image (no crashes).
// anything above open(2) fails and crashes
if(capture.isOpened()){
// in here i check the values of different properties, they are:
// open(-1) open(1) open(2) HD WEBCAM
// CV_CAP_PROP_FORMAT = 0 -1 -1 -1
// CV_CAP_PROP_FRAME_WIDTH = 720 720 720 640
// CV_CAP_PROP_FRAME_HEIGHT = 486 480 486 480
// CV_CAP_PROP_FOURCC = 1.49883e+09 -4.66163e+08 -4.66163e08 8.44715e+08
// CV_CAP_PROP_FPS = 30 0 0 0
}
接下来是播放器类的主循环(它在自己的线程上)
while(!stop){
// this is the command that tries to read the next frame
if(!capture.read(frame)){
// this happens for the open(-1) version
}
}
所以基本上分辨率是720x486或720x480,这很奇怪,似乎连接了三个摄像头但是带有capture.open(-1)的列表只显示2. open(2)将成功加载黑色图像: P.我确定相机正在工作,因为我可以在其他应用程序中查看它,例如" Livestream Studio"。视频从摄像机到控制器(我认为分辨率降低到720)无线地从那里到Blackmagic design HDMI-> USB3.0转换器,然后从那里到PC。经过激烈的谷歌搜索,我发现开放式(-1)版本的四分之一代码1.49883e + 09确实是" 2VUY" Blackmagic使用它是有道理的。可以找到-4.66163e08的意思。
我使用的是openCV 3.0.0,minGW4.92 32bit,Qt 5.5.0
那么有没有人对问题可能是什么有任何想法?我完全没有想法。