gpt4 book ai didi

python - 使用 OpenCV Python 查找字母并将其着色为红色

转载 作者:太空宇宙 更新时间:2023-11-03 22:07:41 28 4
gpt4 key购买 nike

我有一个大图像,里面有一些字母,并从一个字母(“A”)中剪下。我需要在较大的图像中找到每个 A 并将其着色为红色。

大图: large image

字母表 A: Letter A

为了解决这个问题,我使用了以下代码-

import cv2, numpy as np

# read the image and convert into binary
a = cv2.imread('search.png', 0)
ret,binary_image = cv2.threshold(a,230,255,cv2.THRESH_BINARY_INV)

# create the Structuring element
letter_a = cv2.imread('A.png', 0)
ret,se = cv2.threshold(letter_a,230,255,cv2.THRESH_BINARY_INV)

#erosion and dilation for finding A
erosion = cv2.erode(binary_image , se)
new_se = cv2.flip(se,0)
dilation = cv2.dilate(erosion, new_se)
cv2.imwrite('dilation.jpg', dilation )

在这一点上,我得到了下图 dilation image

如您所见,我清楚地识别了所有 A。但是,我需要将这些 A 着色为红色,最重要的是,在第一张大图像上用黑色字母和白色背景书写。有什么办法吗?也许在第一张图片上使用 numpy 数组写入?

最佳答案

您可以按以下方式解决此问题。
首先,要将主图像中的字母涂成红色,最好将其加载为彩色。创建灰度副本以执行阈值。
然后创建一个具有主图像尺寸的黑色图像,并将该图像的颜色设置为红色。带有 A 的图像用作蒙版以获得红色 A 的图像。然后将这些红色 A 添加到主图像中。*

结果:

enter image description here

代码:

import cv2, numpy as np

# load the image in color
a = cv2.imread('search.png')
# create grayscale
a_gray = cv2.cvtColor(a,cv2.COLOR_BGR2GRAY)
ret,binary_image = cv2.threshold(a_gray,230,255,cv2.THRESH_BINARY_INV)

# create the Structuring element
letter_a = cv2.imread('A.png', 0)
ret,se = cv2.threshold(letter_a,230,255,cv2.THRESH_BINARY_INV)

#erosion and dilation for finding A
erosion = cv2.erode(binary_image , se)
new_se = cv2.flip(se,0)
dilation = cv2.dilate(erosion, new_se)

# create a red background image
red = np.zeros((a.shape[:3]),dtype=a.dtype)
red[:] = (0,0,255)
# apply the mask with A's to get red A's
red_a = cv2.bitwise_and(red,red,mask=dilation)

# Add the A's to the main image
result = cv2.add(a,red_a)

cv2.imshow('Result', result )
cv2.waitKey(0)
cv2.destroyAllWindows()

*如果字母不是黑色,则需要额外的步骤,请阅读 tutorial .但对于您的图像,这不是必需的。

关于python - 使用 OpenCV Python 查找字母并将其着色为红色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54600647/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com