通过使用OpenCV的VideoCapture类,我能够从我的网络摄像头录制8位图像。 但是,我需要更多的Color值。所以,我可能需要16位或24位图像。 如何在OpenCV中做到这一点?
答案 0 :(得分:1)
如果您的主题是文具,那么您可以通过平均连续帧来生成更清晰的图像。在存储结果时,甚至可能存在更大的位深度值,但不要指望奇迹--8位摄像机和8位视频编解码器永远不会为您提供正确的16位视频。
例如,这是在光线不足的情况下由网络摄像头捕获的帧。它相当嘈杂:
这是平均一百个连续帧的结果。它更好,但并不完美。
答案 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);
}