【问题标题】:How can I change the background of only white pixels?如何仅更改白色像素的背景?
【发布时间】:2017-10-07 14:18:41
【问题描述】:

我有两张相同大小的灰度图,其中一张是:

我正在尝试为此图像添加背景,即只是将白色像素更改为另一张图片中的相应像素。我设法做的最好的结果只是按位和两张图片的所有像素,但结果图片在詹姆斯邦德内部失真。我还尝试在两张图片之间进行加权相加,但是当我增加 James Bond 图像的权重时,在生成的图像中可以看到白色像素。

【问题讨论】:

    标签: python opencv cv2


    【解决方案1】:

    要与第二张图片组合,请确保两张图片的尺寸相同(您的尺寸相同)。然后它们可以组合起来

    import cv2
    
    img_jb = cv2.imread('james_bond.png')    
    img_007 = cv2.imread('007_logo.png')
    
    height, width, channels = img_jb.shape
    img_007_resized = cv2.resize(img_007, (width, height), interpolation=cv2.INTER_CUBIC)
    
    threshold = img_jb > 240
    img_jb[threshold] = img_007_resized[threshold]
    
    cv2.imwrite('james_bond_logo.png', img_jb)
    

    给你:

    numpy 允许您处理与给定条件匹配的数组的索引。这具有将像素从背景图像复制到前景图像中的效果,其中前景图像的值高于240

    【讨论】:

    • 这对我有用,但我遇到了人物周围白色轮廓的问题。
    • 去除白边比较复杂。这将需要创建一个合适的蒙版并羽化边缘。这可以使用 OpenCV 函数完成,但使用纯 numpy 功能不容易。
    猜你喜欢
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 2019-10-02
    相关资源
    最近更新 更多