【问题标题】:Standardizing camera input in OpenCV? (Contrast/Saturation/Brightness etc..)在 OpenCV 中标准化相机输入? (对比度/饱和度/亮度等)
【发布时间】:2011-02-13 14:28:48
【问题描述】:

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

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

谁能告诉我如何从图像中计算其中一些参数并使用 OpenCV 适当地调整它们?

【问题讨论】:

    标签: python image-processing opencv camera


    【解决方案1】:

    您可以通过多种方式在 openCV 中对图像进行后期处理。

    要设置对比度,您可以使用equalizeHist 函数。

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

    【讨论】:

    • 你好 Rics,你能告诉我一件事我们可以增加和减少 OpenCV 中图像的清晰度吗?
    • 这是一个 stackoverflow 参考,希望能回答您的问题:stackoverflow.com/questions/4993082/…
    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多