【问题标题】:Copy one channel data to another channel in Opencv将一个通道数据复制到 Opencv 中的另一个通道
【发布时间】:2016-10-22 15:43:53
【问题描述】:

如何使用 opencv 将 mat 图像的红色通道值复制到蓝色通道。 提前致谢。

【问题讨论】:

  • 整个频道?一种方法是 cv::split 图像,然后 cv::merge 相应地。见opencvexamples.blogspot.de/2013/10/… ...也许有更快的方法,但我不知道。
  • @Micka:我已经在红色通道中有值,我想将该值复制到其他 2 个通道
  • 在这种情况下扫描矩阵和设置值应该更快。红色通道值在单独的矩阵中?或者您想在同一矩阵中将蓝色/绿色通道设置为红色通道?还请添加一些代码以澄清
  • @NibinJose 如果你想尝试拆分和合并版本,你可以在合并之前将红色通道添加到向量中 3 次(不要添加其他通道)。
  • 谢谢大家,我知道了,拆分频道并将其复制到其他频道

标签: c++ opencv c++11 opencv3.0


【解决方案1】:
cv::Mat Image =cv::imread("image.jpg");
uint8_t * orig_ptr = (uint8_t*)Image.data;
for (int y = 0; y < Image.rows; y++)
{
    for (int x = 0; x < Image.cols; x++)
    {
        int R = orig_ptr[x * 3 + y*Image.step + 2];
        orig_ptr[x * 3 + y*Image.step + 1] = R;
        orig_ptr[x * 3 + y*Image.step] = R;
    }
}

【讨论】:

    猜你喜欢
    • 2013-10-21
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    相关资源
    最近更新 更多