代码之家  ›  专栏  ›  技术社区  ›  shruti

使用Opencv C程序的Webcam中的灰色图像,但C++程序工作正常

  •  1
  • shruti  · 技术社区  · 9 年前

    我正在尝试获取网络摄像头直播。这是我的C程序:

    int main()
    {
        cvNamedWindow("Webcam feed", 1);
        printf("Checking if camera is working\n");
        CvCapture *cap = cvCaptureFromCAM(0);
        if (!cap)
        {
            printf("Error opening camera\n");
            return -1;
        }
    
        printf("yes it is in loop");
        IplImage *frame = cvQueryFrame(cap);
        if (!frame)
        {
            printf("Error in capturing frames from webcam\n");
            return -1;
        }
        cvSaveImage("C:/Users/shru/Desktop/mee.jpg", frame);
        key = cvWaitKey(10);
        if (char(key) == 27)
        {
            return -1;
        }
        cvReleaseCapture(&cap);
        cvDestroyWindow("Webcam Feed");
        return 0;
    }
    

    下面是我的C++程序:

    int main(int, char**)
    {
        VideoCapture cap(0); // open the default camera
        if (!cap.isOpened())  // check if we succeeded
            return -1;
        for (;;)
        {
            Mat frame;
            cap >> frame; // get a new frame from camera
            //cvtColor(frame, edges, COLOR_BGR2GRAY);
            //GaussianBlur(edges, edges, Size(7, 7), 1.5, 1.5);
            //Canny(edges, edges, 0, 30, 3);
            imshow("Webcam feed", frame);
            if (waitKey(30) >= 0) break;
        }
        // the camera will be deinitialized automatically in VideoCapture destructor
    
        return 0;
    }
    

    但问题是C输出显示灰色屏幕,C++程序提供了积极的结果。我是做错了什么还是有不同的问题。我正在Visual Studio 2013中使用Opencv 3.0 alpha版本。

    1 回复  |  直到 9 年前
        1
  •  4
  •   GPPK    9 年前

    如果您使用的是OpenCV 3.0,则不应使用C API。它已被弃用,要么使用旧版本的OpenCV(如果您需要C API),要么只使用C++。使用3.0时无法解决此问题