gpt4 book ai didi

python - OpenCV:如何从背景中删除文本

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

现在我正在尝试创建一个程序,它可以从背景中删除文本,但我遇到了很多问题

我的方法是使用 pytesseract 来获取文本框,一旦我得到文本框,我就使用 cv2.inpaint 来绘制它并从那里删除文本。简而言之:

d = pytesseract.image_to_data(img, output_type=Output.DICT) # Get text
n_boxes = len(d['level']) # get boxes
for i in range(n_boxes): # Looping through boxes
# Get coordinates
(x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i])
crop_img = img[y:y+h, x:x+w] # Crop image
gray = cv2.cvtColor(crop_img, cv2.COLOR_BGR2GRAY)
gray = inverte(gray) # Inverse it
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU)[1]
dst = cv2.inpaint(crop_img, thresh, 10, cv2.INPAINT_TELEA) # Then Inpaint
img[y:y+h, x:x+w] = dst # Place back cropped image back to the source image

现在的问题是我无法完全删除文本图像: enter image description here

现在我不确定我可以使用什么其他方法从图像中删除文本,我是新手,这就是我遇到问题的原因。非常感谢任何帮助

注意:图像看起来被拉伸(stretch)了,因为我调整了它的大小以在屏幕尺寸中显示它

原始图片:

enter image description here

最佳答案

这是一种使用形态学操作+轮廓过滤的方法

  • 将图像转换为灰度
  • Otsu 获取二值图像的阈值
  • 执行 morph close 将单词连接成单个轮廓
  • 扩张以确保所有文本位都包含在轮廓中
  • 使用轮廓区域查找轮廓并进行过滤
  • 通过用背景色“填充”轮廓矩形来删除文本

我使用 chrome 开发者工具来确定图像的背景颜色为 (222,228,251)。如果你想动态确定背景颜色,你可以试试 finding the dominant color using k-means .这是结果

enter image description here

import cv2

image = cv2.imread('1.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]

close_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (15,3))
close = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, close_kernel, iterations=1)

dilate_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5,3))
dilate = cv2.dilate(close, dilate_kernel, iterations=1)

cnts = cv2.findContours(dilate, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
for c in cnts:
area = cv2.contourArea(c)
if area > 800 and area < 15000:
x,y,w,h = cv2.boundingRect(c)
cv2.rectangle(image, (x, y), (x + w, y + h), (222,228,251), -1)

cv2.imshow('image', image)
cv2.waitKey()

关于python - OpenCV:如何从背景中删除文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58349726/

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