如何从灰色背景的图像中获取白色文本并将其粘贴到另一张图像上

问题描述 投票:0回答:1

嗨,我正在使用 opencv 从一张图像中提取白色文本并将其粘贴到另一张图像上。我使用下面的方法来处理黑色图像背景,效果很好。检查以下代码

import cv2
import numpy as np
image_msg = (30, 209, 187, 31)

base_path="/Users/images/"
mask_image1 = "{}show_image_2.PNG".format(base_path)

image_1_title = "{}show_image_2_logo.PNG".format(base_path)

img = cv2.imread(mask_image1)


image_1_title_img = cv2.imread(image_1_title)
image_1_titl_img = cv2.cvtColor(image_1_title_img, cv2.COLOR_BGR2RGB)
im1r_title = cv2.resize(image_1_titl_img, (image_msg[2], image_msg[3]))

print(im1r_title.shape)
plt.imshow(im1r_title,cmap='gray')
plt.axis('off')
plt.show()
print(img.shape)
plt.imshow(img,cmap='gray')
plt.axis('off')
plt.show()

img[image_msg[1]: image_msg[1] + image_msg[3], 
      image_msg[0]: image_msg[0] + image_msg[2],
     ] = np.where(im1r_title < [100, 100, 100], img[image_msg[1]: image_msg[1] + image_msg[3], 
     image_msg[0]: image_msg[0] + image_msg[2],
     ], im1r_title)

plt.imshow(img,cmap='gray')
plt.axis('off')
plt.show()

结果:

但是我正在努力寻找一种从下面获取白色文本的方法,如果您打开此图像,您将看到白色文本,我如何提取并粘贴到另一张图像上?

带有文字的有问题的图像:

python numpy opencv image-processing
1个回答
0
投票

那是因为所有信息实际上都在 Alpha/透明度通道中,该通道显示白色应该显示的位置和黑色背景应该显示的位置。

如果我将您的图像分成其组成的 R、G、B 和 A 通道并将它们并排放置,您将看到信息位于右侧的 A 通道中:

我人为地添加了一个红色边框,这样你就可以在 StackOverflow 讨厌的白色背景上看到它的完整范围。

您需要使用以下命令打开它:

im = cv.imread(..., cv.IMREAD_UNCHANGED)[..., 3]
© www.soinside.com 2019 - 2024. All rights reserved.