在OpenCV中捕获具有更高深度的图像

时间:2014-01-28 10:40:41

标签: opencv image-processing video-capture

通过使用OpenCV的VideoCapture类,我能够从我的网络摄像头录制8位图像。 但是,我需要更多的Color值。所以,我可能需要16位或24位图像。 如何在OpenCV中做到这一点?

2 个答案:

答案 0 :(得分:1)

如果您的主题是文具,那么您可以通过平均连续帧来生成更清晰的图像。在存储结果时,甚至可能存在更大的位深度值,但不要指望奇迹--8位摄像机和8位视频编解码器永远不会为您提供正确的16位视频。

例如,这是在光线不足的情况下由网络摄像头捕获的帧。它相当嘈杂:

Webcam image of a boatyard in low light conditions

这是平均一百个连续帧的结果。它更好,但并不完美。

Cleaner image obtained by averaging 100 consecutive frames from the same webcam

答案 1 :(得分:0)

大多数网络摄像头仅支持每个颜色通道8位。确保您的相机支持更高的深度;并且不要使用OpenCV来检索此案例的视频。 OpenCV将整个数据转换为8位& 3个频道。

使用相机制造商API(或v4l等第三方库)检索更高深度的数据,并手动将数据推送到IplImage或Mat中。类似的东西:

// allocate Mat data
Mat frame(640, 480, CV_16UC3);;
// populate
loop{
frame.at<Vec3b>(i,j) = ImageReturnedByCamera.at(i,j);
}