我很难使用 OpenCV 创建 BAYER10 img,因为它没有任何从 RGB8 到 BAYER10 的转换机制。我相信 OpenCV 本身也不支持 10 位像素,所以它更难。 我正在考虑尝试生成一个 16 位图像,然后将其缩小到 10 位,这可能是一个解决方案。
我尝试过类似的方法,但它不起作用:
cv::Mat rgb_image(data->height, data->width, CV_16UC3);
for (int y = 0; y < data->height; y++) {
for (int x = 0; x < data->width; x++) {
rgb_image.at<cv::Vec3w>(y, x)[0] =
(x + data->frame_counter) % 1024; // Red channel
rgb_image.at<cv::Vec3w>(y, x)[1] =
(y + data->frame_counter) % 1024; // Green channel
rgb_image.at<cv::Vec3w>(y, x)[2] =
((x + y + data->frame_counter) / 2) % 1024; // Blue channel
}
}
听起来您正在处理一些高级图像处理任务!您是否尝试过先将 RGB8 图像转换为 16 位,然后截断值以适合 10 位范围?由于 OpenCV 本身不支持 BAYER10,因此手动处理像素深度转换可能会有所帮助。您还可以查看 PyImage 等替代库或实现自定义函数以将 16 位图像缩小到 10 位。让我知道进展如何! 了解更多