1

我正在尝试使用以下代码设置相机参数,但它根本不起作用。

using namespace cv;

    int main(int argc,char *argv[])
    {
        VideoCapture cap(0); // open the default camera 
        if(!cap.isOpened())  // check if we succeeded
            return -1;
        bool value = cap.set(CV_CAP_PROP_FRAME_WIDTH,10);
        for(;;)
        {
            Mat frame;
            cap >> frame;   // get a new frame from camera
            imshow("frame", frame);
            unsigned char *dad = (unsigned char*)frame.data;
            if(waitKey(30) >= 0) break;
        }
        // the camera will be deinitialized automatically in VideoCapture destructor
        return 0;
    }
4

3 回答 3

2

OpenCV 尝试直接在相机中设置这个大小,因此它不需要调整框架的大小。

这种方法的问题在于,如果您的相机本身不支持此尺寸,OpenCV 将无法设置该值,让您在检索帧后调整其大小。

cap.set()似乎返回函数成功,建议你检查一下。

我建议看看另一个线程:如何更改 OpenCV 中的捕获分辨率

于 2012-05-23T13:42:18.647 回答
0

来自 opencv 正在使用 directshow 进行视频捕获。但是,您的相机仅支持一些分辨率设置,例如 480*320、640*480、720p、1080p。如果你设置别的东西,它根本不起作用。如果您想检查您的相机支持哪种分辨率。下载 graphedt 并检查捕获 pin 属性。

于 2012-06-19T13:02:17.647 回答
-1

上面的代码不用于更改相机参数。我认为它完全可以在您的机器上显示视频。可能这个链接对你有用http://opencv.willowgarage.com/wiki/CameraCapture

于 2012-05-23T12:22:08.087 回答