Opencv cvCaptureFromCAM()/cvQueryFrame():是否禁用自动图像校正?

Opencv cvCaptureFromCAM()/cvQueryFrame():是否禁用自动图像校正?,opencv,camera,video-capture,image-capture,Opencv,Camera,Video Capture,Image Capture,我正在使用上面提到的两个OpenCV函数从我的网络摄像头中检索帧。不设置其他属性,只使用默认参数运行 在循环读取帧时,我可以看到图像发生变化,亮度和对比度似乎自动调整。这显然是OpenCV的一个操作,因为相机捕捉到的图像没有改变,也没有持续点亮 那么,如何禁用此自动更正?我找不到一个似乎能够完成该工作的属性。您应该尝试使用以下三个参数: CV_CAP_PROP_图像亮度(仅适用于相机) CV_CAP_PROP_图像对比度(仅适用于相机) CV_CAP_PROP_图像饱和度(仅适用于相机) 试着把

我正在使用上面提到的两个OpenCV函数从我的网络摄像头中检索帧。不设置其他属性,只使用默认参数运行

在循环读取帧时,我可以看到图像发生变化,亮度和对比度似乎自动调整。这显然是OpenCV的一个操作,因为相机捕捉到的图像没有改变,也没有持续点亮


那么,如何禁用此自动更正?我找不到一个似乎能够完成该工作的属性。

您应该尝试使用以下三个参数:

CV_CAP_PROP_图像亮度(仅适用于相机) CV_CAP_PROP_图像对比度(仅适用于相机) CV_CAP_PROP_图像饱和度(仅适用于相机)


试着把它们都设为50。另外(如果没有帮助的话)尝试从更改另一个摄像头捕获参数。

来回答我自己的问题:OpenCV有缺陷或过时

  • 似乎不可能以相机的本机分辨率获得图像,它们总是640x480;通过设置“宽度”和“高度”属性将其强制为其他值也不会改变任何内容
  • 似乎不可能禁用自动图像校正,上述属性似乎不起作用
  • 亮度/对比度属性似乎不起作用-或者至少我找不到任何好的值,或者自动图像校正总是覆盖它们

总而言之:我不建议使用OpenCV进行更多增强的图像捕获。

这引出了另一个我从未找到解决方案的问题:这些值的有效范围是多少?0..100?从opencv源代码(linux)中,我发现默认范围值为[0..255]。但在设置参数之前,他们会从相机驱动程序中获得这个范围,所以这取决于您的环境。你们试过哪些参数?我试过为这些属性设置50、5和1,但所有这些都会导致图像太亮,完全无法使用。所以我决定让相机进行自动校正,然后再进行我自己的亮度/饱和度/伽马/RGB校正。与CV_CAP_PROP_FRAME_WIDTH/_HEIGHT的情况相同,我将相机的本机分辨率设置为1280x960,但仍然只能返回640x480图像。因此,至少在v4l中,这似乎并不像预期的那样有效。