在OpenCV中标准化摄像头输入? (对比度/饱和度/亮度等..)

时间:2010-04-28 23:53:00

标签: python image-processing opencv camera

我正在使用OpenCV构建一个应用程序,该应用程序使用网络摄像头并运行一些视觉算法。我想在完成后在互联网上提供这个应用程序,但我担心每台计算机上的摄像机设置存在巨大差异,我担心如果设置与我的设置太不相同,算法可能会中断。 / p>

有没有办法,在捕获帧后,对其进行后期处理并确保对比度为X,亮度为Y,饱和度为Z?我认为无法使用当前的OpenCV Python绑定直接从代码更改Camera设置本身。

有人能告诉我如何从图像中计算出一些参数并使用OpenCV进行适当调整吗?

2 个答案:

答案 0 :(得分:3)

您可以通过多种方式在openCV中处理图像。

要设置对比度,您可以使用equalizeHist功能。

要设置亮度和饱和度,首先应使用cvtColor将图像转换为HSV色彩空间。然后,您可以通过直接访问每个图像像素将饱和度和值(亮度)修改为适当的值。

答案 1 :(得分:2)

我正在努力解决同样的问题。这是一段代码,它可以从图像中去除所有值(亮度)信息,这使得它在光量变化很大的情况下可能会更加稳定。您当然可以调整任何其他参数:

    // img is an rgb image
    cvCvtColor(img, img, CV_RGB2HSV);
    for( int y=0; y<img->height; y++ ) {
        uchar* ptr = (uchar*) (
            img->imageData + y * img->widthStep
        );
        for( int x=0; x<img->width; x++ ) {
            ptr[3*x+2] = 255; // maxes the value,
            // use +1 for saturation, +0 for hue
        }
    }

    // convert back for displaying
    cvCvtColor(img, img, CV_HSV2RGB);