【问题标题】:Opencv2.4 Setting Camera ParametersOpencv2.4设置相机参数
【发布时间】:2012-05-29 23:21:19
【问题描述】:

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

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;
    }

【问题讨论】:

  • 请解释“根本不工作”是什么意思。它编译吗?它会抛出错误吗?我可以想象您的相机和/或驱动程序不支持更改帧宽度参数。例如,在 Linux 中,无法更改使用 V4L 的相机的参数。
  • 另外,如果你想显示图片,你应该在无限循环之前添加这行cvNamedWindow( "frame", CV_WINDOW_AUTOSIZE );
  • 我的意思是我无法更改任何相机参数。

标签: c++ opencv


【解决方案1】:

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

【讨论】:

  • 你错了,这行bool value = cap.set(CV_CAP_PROP_FRAME_WIDTH,10); 应该是改变帧宽参数。
【解决方案2】:

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

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

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

我建议看看另一个帖子:how to change the capture resolution in OpenCV

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-10
      • 2013-08-03
      • 1970-01-01
      • 1970-01-01
      • 2013-06-18
      • 1970-01-01
      相关资源
      最近更新 更多