放大图像中的文本后如何保留背景
How can I retain background after dilating text in image
import cv2
import numpy as np
# Load image, grayscale, Gaussian blur, Otsu's threshold
image = cv2.imread('1.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (7,7), 0)
thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
# Create rectangular structuring element and dilate
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5,5))
dilate = cv2.dilate(thresh, kernel, iterations=4)
cv2.imshow('dilate', dilate)
cv2.waitKey()
我正在尝试屏蔽图像中的文本元素和 return 仅包含剩余部分的图像。我应用了阈值化和扩张,但如何保留背景。
阈值化和扩张后的图像
原图:
这是一个简单的方法:
使用反转扩张图像cv2.bitwise_not(dilate)
,在原始图像上创建一个蒙版。
res = cv2.bitwise_and(image, image, mask=cv2.bitwise_not(dilate))
在上图中,所有文本区域及其边界都被屏蔽了。
现在用原始图像的背景替换那些被屏蔽掉的区域。为此,我首先记下 mask_ind
中文本重新出现的坐标。然后将那些区域的像素值替换成原图的背景image[0,0]
mask_ind = (dilate == 255)
res[mask_ind] = image[0,0]
cv2.imshow(res)
import cv2
import numpy as np
# Load image, grayscale, Gaussian blur, Otsu's threshold
image = cv2.imread('1.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (7,7), 0)
thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
# Create rectangular structuring element and dilate
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5,5))
dilate = cv2.dilate(thresh, kernel, iterations=4)
cv2.imshow('dilate', dilate)
cv2.waitKey()
我正在尝试屏蔽图像中的文本元素和 return 仅包含剩余部分的图像。我应用了阈值化和扩张,但如何保留背景。
阈值化和扩张后的图像
原图:
这是一个简单的方法:
使用反转扩张图像cv2.bitwise_not(dilate)
,在原始图像上创建一个蒙版。
res = cv2.bitwise_and(image, image, mask=cv2.bitwise_not(dilate))
在上图中,所有文本区域及其边界都被屏蔽了。
现在用原始图像的背景替换那些被屏蔽掉的区域。为此,我首先记下 mask_ind
中文本重新出现的坐标。然后将那些区域的像素值替换成原图的背景image[0,0]
mask_ind = (dilate == 255)
res[mask_ind] = image[0,0]
cv2.imshow(res)