我有一塊的C++代碼:cvCaptureFromCAM(CV_CAP_ANY)返回NULL
#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++代碼。 輸出仍然NULL無論是顯示一些錯誤消息:
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
我不知道。 Python代碼的作品,我想我沒有運行其他程序使用網絡攝像頭。 – 01zhou
好的...但我也收到了同樣的錯誤,發現我的攝像頭在另一個應用程序中忙碌。 – skm