OpenCV:如何从一个图像复制文本并在另一个图像上叠加

b4lqfgs4  于 2023-11-22  发布在  其他
关注(0)|答案(1)|浏览(142)

我有一个只有文本的图像(总是在白色颜色),我想复制文本从它到另一个图像。
下面是带有徽标和图像的图像。目前我正在截取此文本的屏幕截图并将其叠加在另一个图像上,但正如您所看到的,我得到了与文本一起的黑色矩形沿着,我如何才能摆脱黑色矩形区域或只是将文本从黑色框架复制到图像?
100d1x


的字符串

image_2_replace = cv2.imread(mask_image2)
im2r = cv2.cvtColor(image_2_replace, cv2.COLOR_BGR2RGB)

image_2_title_img = cv2.imread(image_2_title)
image_2_titl_img = cv2.cvtColor(image_2_title_img, cv2.COLOR_BGR2RGB)

im2r_title = cv2.resize(image_2_titl_img, (left_image_msg[2], left_image_msg[3]))

# take the coordinate of the location where i need to put the text screenshot and add it over the image.

im2r[153: 153 + 324, 
     580: 580 + 256] = im2r_title

字符串

ercv8c1e

ercv8c1e1#

黑色背景也会被复制,因为你把整个裁剪粘贴到你的图像中:

im2r[153: 153 + 324, 
     580: 580 + 256] = im2r_title

字符串
但是由于你的标题是在一个漂亮的黑色背景上,你只能复制图片中那些从黑色中突出的部分,这些部分的rgb代码将不同于[0 0 0]。
实现可能看起来像这样(我使用了你的截图和一些不同的剪切位置):

im2r[153: 153 + 70,
     280: 580 + 200,
     ] = np.where(im2r_title < [100, 100, 100], im2r[153: 153 + 70,
     280: 580 + 200,
     ], im2r_title)


这个魔术是由np.where(im2r_title < [100, 100, 100],...完成的。在这里我告诉numpy只替换im 2 r图片中颜色小于[100,100,100]的像素。这意味着黑色/深灰色区域不会粘贴到你的图像上。(图像下面的整个代码)
x1c 0d1x的数据

import cv2
import numpy as np
image_2_replace = cv2.imread("92K7B.png")
im2r = cv2.cvtColor(image_2_replace, cv2.COLOR_BGR2RGB)

image_2_title_img = cv2.imread("J33EF.png")
image_2_titl_img = cv2.cvtColor(image_2_title_img, cv2.COLOR_BGR2RGB)

im2r_title = image_2_titl_img[250:320, 200:400]
cv2.imshow("image_2_title_img",im2r_title)

# take the coordinate of the location where i need to put the text screenshot and add it over the image.
im2r[153: 153 + 70,
     280: 580 + 200,
     ] = np.where(im2r_title < [100, 100, 100], im2r[153: 153 + 70,
     280: 580 + 200,
     ], im2r_title)

cv2.imshow("image_2_title_img",im2r)
cv2.waitKey(0)

相关问题