【问题标题】:Put image on another making black parts transparent将图像放在另一个使黑色部分透明
【发布时间】:2013-12-16 08:36:25
【问题描述】:

我想要做的是将一张图像放在第二张图像上,但只有那些不是完全黑色的部分。我怎么能在 Matlab 中做到这一点?

我现在拥有的是这样的:

所以我基本上想要的是相同的东西,没有白纸周围的黑色边框。这是我的代码:

resizedBg(startrow:startrow+size(rscrop,1)-1, startcol:startcol+size(rscrop,2)-1, :) = rscrop;

提前致谢!

【问题讨论】:

    标签: image matlab transparent


    【解决方案1】:

    基本上,你可以像戴着面具一样行事。

    让你的第一张图片 A 和第二张图片 B。你想在 A 完全黑色的地方用 B 填充。它直接翻译成 Matlab 为:

    C = zeros(size(B,1), size(B,2),3);
    C(startRow:startRow+size(A,1)-1, startCol:startCol+size(A,2)-1,:) = A;
    M = repmat(sum(C,3)==0,1,1,3);
    C(M) = B(M);
    

    我将蒙版 M 扩展到 3 个维度,以便直接用作蒙版。

    【讨论】:

    • 不完全...我想在 B 中插入 A。A 小于 B,我知道起始位置。 A 是一个扭曲的白色矩形,用黑色填充以获得矩形图像。 B 是灰色背景。
    • @user3038350 答案已更正,现在正确吗?我假设您想要一个与 B 大小相同的图像。您的背景是类似 RGB 的图像还是真正的灰色图像(每像素 1 个字节)?
    • 我在 repmat 上遇到错误(调用时参数过多)。两张图片都是 RGB 格式。
    • @user3038350 抱歉,我在分配C 时出错了。已更正,它现在应该可以正常运行了。
    • 我仍然遇到同样的错误 ^^ sum(C,3)==0,1,1,3 到底是做什么的?
    猜你喜欢
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 2016-06-12
    • 1970-01-01
    • 2013-08-21
    • 2020-05-31
    • 1970-01-01
    相关资源
    最近更新 更多