如何使两张相机照片看起来相似(亮度、白平衡……)
How to make two camera pictures look similar (Brightness, White Balance,...)
我有两个网络摄像头(都是罗技 C615)。我想以一种方式调整网络摄像头,使它们在相同的环境中拍摄出几乎相同的照片。 (原因是我想将此图像渲染到 occulus rift 上)。
我正在使用 OpenCV 连接相机。我的第一个无辜尝试是从一个摄像头获取所有 CV_CAP_PROPs 并将值设置到另一个摄像头。效果不是很好。
是否已经有我可以使用的功能,或者你能给我另一种方法吗?
--- 编辑:直方图均衡化 ---
这是结果:
结果比以前好,但是你可以看到色调不同。
尝试将它们转换为 YCrCb 并仅均衡 Y 通道(如果需要,将它们转换回 BGR)。
这应该使两个图像的亮度相等。
代码段:
cv::cvtColor( frame, frame, CV_BGR2YCrCb);
cv::split( frame, channels);
cv::equalizeHist( channels[0], channels[0] );
cv::merge( channels, 3, frame );
cv::cvtColor( frame, frame, CV_YCrCb2BGR );
我有两个网络摄像头(都是罗技 C615)。我想以一种方式调整网络摄像头,使它们在相同的环境中拍摄出几乎相同的照片。 (原因是我想将此图像渲染到 occulus rift 上)。
我正在使用 OpenCV 连接相机。我的第一个无辜尝试是从一个摄像头获取所有 CV_CAP_PROPs 并将值设置到另一个摄像头。效果不是很好。
是否已经有我可以使用的功能,或者你能给我另一种方法吗?
--- 编辑:直方图均衡化 ---
这是结果:
尝试将它们转换为 YCrCb 并仅均衡 Y 通道(如果需要,将它们转换回 BGR)。 这应该使两个图像的亮度相等。
代码段:
cv::cvtColor( frame, frame, CV_BGR2YCrCb);
cv::split( frame, channels);
cv::equalizeHist( channels[0], channels[0] );
cv::merge( channels, 3, frame );
cv::cvtColor( frame, frame, CV_YCrCb2BGR );