【问题标题】:How create image overlays? change edges color如何创建图像叠加层?改变边缘颜色
【发布时间】:2017-08-21 08:20:55
【问题描述】:

如何创建图像叠加层?改变边缘颜色: 为了将边缘更改为绿色,起初我使用了“sobel”,但是覆盖部分有一个错误:“IMG 必须是灰度或 RGB 图像的数组:writeVideo(writer,double(out));”为什么?

    out_red(BW)=0;
    out_green(BW)=255;
    out_blue(BW)=0;


    writeVideo(writer,double(uint8(out)));


close(writer);

【问题讨论】:

    标签: matlab cat sobel


    【解决方案1】:

    尝试以下方法:

    redChannel = inputImage(:, :, 1);
    greenChannel = inputImage(:, :, 2);
    blueChannel = inputImage(:, :, 3);
    writeVideo(writer, uint8(out));
    

    writeVideo 类期望数据为 uint8,如果其范围是 {0, 1, 2, ..., 255}。
    如果你想使用 singledouble 数据,你需要将其缩放回 [0, 1] 范围。

    【讨论】:

    • 这样做会出现错误:“IMG 必须是灰度或 RGB 图像的数组”然后我尝试这样做:“writeVideo(writer, double(uint8(out)));”但仍然出现错误:“IMG 必须是灰度或 RGB 图像的数组”。为什么?
    • 您没有单独提取每个频道。查看我的编辑。
    【解决方案2】:

    你错误地将整个img设置为每个颜色通道,应该是这样的:

    out_red=img(:,:,1);
    out_green=img(:,:,2);
    out_blue=img(:,:,3);
    

    最后做writeVideo(writer, uint8(out));

    【讨论】:

      猜你喜欢
      • 2021-07-13
      • 2018-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多