我正在使用OpenCV构建一个应用程序,该应用程序使用网络摄像头并运行一些视觉算法。我想在完成后在互联网上提供这个应用程序,但我担心每台计算机上的摄像机设置存在巨大差异,我担心如果设置与我的设置太不相同,算法可能会中断。 / p>
有没有办法,在捕获帧后,对其进行后期处理并确保对比度为X,亮度为Y,饱和度为Z?我认为无法使用当前的OpenCV Python绑定直接从代码更改Camera设置本身。
有人能告诉我如何从图像中计算出一些参数并使用OpenCV进行适当调整吗?
答案 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);