繁体   English   中英

OpenCV无法从isight网络摄像头捕获图像

[英]OpenCV unable to capture image from isight webcam

我无法使用以下OpenCV代码从我的网络摄像头捕获图像。

代码可以显示来自本地AVI文件或视频设备的图像。 它在“test.avi”文件中工作正常。

当我使用我的默认网络摄像头(CvCapture * capture = cvCreateCameraCapture(0))时,程序可以从网络摄像头检测到图像的大小,但是无法显示图像

/ 我忘了提到我可以看到iSight正在工作,因为LED指示灯已打开 /

有人遇到同样的问题吗?

cvNamedWindow( "Example2", CV_WINDOW_AUTOSIZE );

CvCapture* capture =cvCreateFileCapture( "C:\\test.avi" ) ;// display images from avi file, works well 
// CvCapture* capture =cvCreateCameraCapture(0); //display the frame(images) from default webcam not work 

assert( capture );
IplImage* image;

while(1) {
 image = cvQueryFrame( capture );
   if( !image ) break;

  cvShowImage( "Example2", image );

  char c = cvWaitKey(33);
  if( c == 27 ) break;
}

cvReleaseCapture( &capture );
cvDestroyWindow( "Example2" );
  • opencv 2.2
  • 调试库* d.lib
  • WebCam是的
  • Macbook OS win7 32
  • VS2008

我正在使用Macbook pro Mid 2012开启opencv 2.3,我遇到了Isight cam的问题。 不知何故,我设法通过简单地调整Cvcapture的参数并调整框架宽度和高度使其在opencv上工作:

CvCapture* capture = cvCaptureFromCAM(0);
cvSetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH, 500 );
cvSetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT, 600 );

您还可以将这些数字更改为所需的帧宽和高度。

试试这个:

int main(int, char**) {
    VideoCapture cap(0); // open the default camera
    if (!cap.isOpened()) {  // check if we succeeded
        cout << "===couldn't open camera" << endl;
        return -1;
    }
    Mat edges, frame;
    frame = cv::Mat(10, 10, CV_8U);
    namedWindow("edges", 1);
    for (;;) {
        cap >> frame; // get a new frame from camera
        cout << "frame size: " << frame.cols << endl;
        if (frame.cols > 0 && frame.rows > 0) {
            imshow("edges", frame);
        }
        if (waitKey(30) >= 0)
            break;
    }
    // the camera will be deinitialized automatically in VideoCapture destructor
    return 0;
}

您是否尝试过opencv页面中的示例?

即,

#include "cv.h"
#include "highgui.h"

using namespace cv;

int main(int, char**)
{
    VideoCapture cap(0); // open the default camera
    if(!cap.isOpened())  // check if we succeeded
        return -1;

    Mat edges;
    namedWindow("edges",1);
    for(;;)
    {
        Mat frame;
        cap >> frame; // get a new frame from camera
        cvtColor(frame, edges, CV_BGR2GRAY);
        GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
        Canny(edges, edges, 0, 30, 3);
        imshow("edges", edges);
        if(waitKey(30) >= 0) break;
    }
    // the camera will be deinitialized automatically in VideoCapture destructor
    return 0;
}

适用于我的macbook pro(尽管在OS X上)。 如果它不起作用,某种错误消息将有所帮助。

最近更新! 问题解决了!

这恰好是OpenCV 2.2的错误之一

以下是如何修复它:

http://dusijun.wordpress.com/2011/01/11/opencv-unable-to-capture-image-from-isight-webcam/

为什么不尝试

capture=cvCaptureFromCam(0);

我认为这可行。

让我知道它的工作与否。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM