如何使用OpenCV创建BAYER10图像

问题描述 投票:0回答:1

我很难使用 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
    }
  }
c++ image opencv image-processing
1个回答
-2
投票

听起来您正在处理一些高级图像处理任务!您是否尝试过先将 RGB8 图像转换为 16 位,然后截断值以适合 10 位范围?由于 OpenCV 本身不支持 BAYER10,因此手动处理像素深度转换可能会有所帮助。您还可以查看 PyImage 等替代库或实现自定义函数以将 16 位图像缩小到 10 位。让我知道进展如何! 了解更多

© www.soinside.com 2019 - 2024. All rights reserved.