如何使用OpenCV将白色像素设置为透明

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用OpenCV将白色像素设置为透明相关的知识,希望对你有一定的参考价值。

我的代码到目前为止。我想在图像中裁剪出白色。

import cv2
import numpy as np

image = cv2.imread('myimage.jpg')
image2 = np.ones((255, 255, 4))
for i in range(255):
    for j in range(255):
        if image[i,j,0] == 255: 
            image2[i, j, :] = np.append(image[i, j, :], 1)
        else:
            image2[i, j, :] = np.append(image[i, j, :], 1)

cv2.imwrite('image2.png', image2)

但它只会产生一个空图。

答案

这应该足够了:

网站的背景是白色的,所以“右键单击”输出和“在新标签中打开图像”,你会发现它是透明的:)

import cv2
import numpy as np

# read the image
image_bgr = cv2.imread('image_bgr.png')
# get the image dimensions (height, width and channels)
h, w, c = image_bgr.shape
# append Alpha channel -- required for BGRA (Blue, Green, Red, Alpha)
image_bgra = np.concatenate([image_bgr, np.full((h, w, 1), 255, dtype=np.uint8)], axis=-1)
# create a mask where white pixels ([255, 255, 255]) are True
white = np.all(image_bgr == [255, 255, 255], axis=-1)
# change the values of Alpha to 0 for all the white pixels
image_bgra[white, -1] = 0
# save the image
cv2.imwrite('image_bgra.png', image_bgra)
  • 输入:

Input

  • 输出(“右键单击”>>“在新标签页中打开”):

Output

以上是关于如何使用OpenCV将白色像素设置为透明的主要内容,如果未能解决你的问题,请参考以下文章

在 OpenCV python 中将白色像素转换为黑色

将白色像素区域合并为单个区域opencv c ++

opencv中如何让白色的区域变成透明背景,然后和别的图片融合???

opencv如何读取多边形区域内的像素值?

如何使用带有c ++的opencv库将下图中的黑色像素更改为红色像素

基于 OpenCV 实战:对象跟踪