cvCaptureFromCAM(CV_CAP_ANY)返回NULL

By simon at 2018-02-28 • 0人收藏 • 76人看过

我有一段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;
}
并使用它进行编译:
g++ main.cpp `pkg-config opencv --cflags` `pkg-config opencv --libs`
而./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 ++代码中读取我的摄像头? 更新: 然后,我将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

4 个回复 | 最后更新于 2018-02-28
2018-02-28   #1

我看到它说“设备/资源很忙” ...我认为你是 在其他地方使用您的摄像头...例如。 Skype等否则尝试使用 以下代码: 尝试使用(1)而不是(0)

VideoCapture cap(1);

for(;;)
{
    Mat frame;
    cap >> frame;
    imshow("My webcam", frame);
}
上面的代码是针对C ++格式的,如果你想要to你可以得到一个IplImage 添加以下行将Mat格式的“框架”转换为 IplImage *格式
IplImage* img = new IplImage(frame);
cvShowImage("IplImage format webcam", img);

2018-02-28   #2

我看到它说“设备/资源很忙” ...我认为你是 在其他地方使用您的摄像头...例如。 Skype等否则尝试使用 以下代码: 尝试使用(1)而不是(0)

VideoCapture cap(1);

for(;;)
{
    Mat frame;
    cap >> frame;
    imshow("My webcam", frame);
}
上面的代码是针对C ++格式的,如果你想要to你可以得到一个IplImage 添加以下行将Mat格式的“框架”转换为 IplImage *格式
IplImage* img = new IplImage(frame);
cvShowImage("IplImage format webcam", img);

2018-02-28   #3

然后我重新启动系统并解决问题。好...

2018-02-28   #4

默认情况下,当你将你的相机连接到你的linux系统时,这个过程称为 “议案”将保持占领。你必须杀死我吨。以下命令 会发现并杀死“议案”。

sudo killall -9动议 执行这个之后,我猜你的代码会工作。如果你愿意,请分享 设法解决它。谢谢

登录后方可回帖

Loading...