Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python cvCaptureFromCAM(CV\u CAP\u ANY)返回NULL 我有一段C++代码: #include <opencv/highgui.h> #include <iostream> int main() { CvCapture* capture = cvCaptureFromCAM(CV_CAP_ANY); //tried (0) too if(capture == NULL) std::cout<<"NULL"<<std::endl; return 0; }_Python_C++_Opencv - Fatal编程技术网

Python cvCaptureFromCAM(CV\u CAP\u ANY)返回NULL 我有一段C++代码: #include <opencv/highgui.h> #include <iostream> int main() { CvCapture* capture = cvCaptureFromCAM(CV_CAP_ANY); //tried (0) too if(capture == NULL) std::cout<<"NULL"<<std::endl; return 0; }

Python cvCaptureFromCAM(CV\u CAP\u ANY)返回NULL 我有一段C++代码: #include <opencv/highgui.h> #include <iostream> int main() { CvCapture* capture = cvCaptureFromCAM(CV_CAP_ANY); //tried (0) too if(capture == NULL) std::cout<<"NULL"<<std::endl; return 0; },python,c++,opencv,Python,C++,Opencv,/a.out的结果是 NULL 我使用OpenCV 2.4.2和Ubuntu 12.04 但是我确信我的网络摄像头很好,因为下面的python代码工作得很好 import cv2 cap = cv2.VideoCapture(0) ret, frame = cap.read() cv2.imshow('frame', frame) # it shows a correct image from the webcam cv2.waitKey(0) 有没有人知道为什么我不能在C++代码中读取我的

/a.out
的结果是

NULL
我使用OpenCV 2.4.2和Ubuntu 12.04

但是我确信我的网络摄像头很好,因为下面的python代码工作得很好

import cv2
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
cv2.imshow('frame', frame) # it shows a correct image from the webcam
cv2.waitKey(0)
有没有人知道为什么我不能在C++代码中读取我的网络摄像头?< /P> 更新:

我将OpenCV升级到2.4.8,并再次编译C++代码。 输出仍然为空,因为它显示了一些错误消息:

VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
libv4l2: error setting pixformat: Device or resource busy
HIGHGUI ERROR: libv4l unable to ioctl S_FMT
libv4l2: error setting pixformat: Device or resource busy
libv4l1: error setting pixformat: Device or resource busy
HIGHGUI ERROR: libv4l unable to ioctl VIDIOCSPICT

NULL

我看到它说,“设备/资源正忙”…我认为您正在其他地方使用网络摄像头…例如。skype等。否则请尝试使用以下代码:

尝试使用(1)而不是(0)

上述代码为C++格式,如果您想获得IPLIGION,可以添加以下行将“在MAT格式”中的“框架”转换为IPLIMAGE *格式

IplImage* img = new IplImage(frame);
cvShowImage("IplImage format webcam", img);

然后我重新启动了系统,问题就解决了。嗯…

默认情况下,当您将相机连接到linux系统时,一个名为“运动”的过程将使其处于占用状态。 你必须杀了它。以下命令将查找并终止“运动”

sudo killall-9运动

执行此操作后,我想您的代码将正常工作。如果你解决了,请分享。
谢谢

我想问题在于我在回答中提到的某个地方您的网络摄像头很忙。如果你同意,请接受答案:)是的,也许你是对的。非常感谢。但是我想知道设备是否忙,为什么python代码可以工作?我不知道。python代码可以正常工作,我想我没有其他使用网络摄像头的程序在运行。好吧……但我也收到了相同的错误,发现我的网络摄像头在另一个应用程序中很忙。谢谢你,但我几年前就做过这件事,现在无法重现:(非常感谢!
VideoCapture cap(1);

for(;;)
{
    Mat frame;
    cap >> frame;
    imshow("My webcam", frame);
}
IplImage* img = new IplImage(frame);
cvShowImage("IplImage format webcam", img);