如何在Python中将前景文本与嘈杂的背景分开?

我正在尝试从这张图片中提取文字

如何在Python中将前景文本与嘈杂的背景分开?

我尝试使用OpenCV调整对比度和亮度,平滑度(例如GaussianBlur,中位数模糊)和阈值技术(例如Otsu),仍然有很多残留噪声。

还有什么我可以尝试的吗?

zuochang0529 回答:如何在Python中将前景文本与嘈杂的背景分开?

您可以尝试结合使用高斯模糊,阈值处理和形态学运算来隔离文本。这是管道

模糊->阈值->打开->扩展->按位与

enter image description here enter image description here enter image description here enter image description here enter image description here

import cv2

image = cv2.imread('1.png')
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray,(7,7),0)
thresh = cv2.threshold(blur,255,cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(5,2))
opening = cv2.morphologyEx(thresh,cv2.MORPH_OPEN,kernel,iterations=3)

# Repair text
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,7))
dilate = cv2.dilate(opening,iterations=2)

# Bitwise-and with input image
result = cv2.bitwise_and(image,image,mask=dilate)
result[dilate==0] = (255,255)

cv2.imshow('thresh',thresh)
cv2.imshow('opening',opening)
cv2.imshow('dilate',dilate)
cv2.imshow('result',result)
cv2.waitKey()
,

如果需要更通用的解决方案,请继续阅读。否则,您可以参考nathancy的答案或本网站中的许多其他答案。


我认为

  

从这张图片中提取文字

表示您希望此图像中的文本作为字符串或文本的ROI。

这称为OCR(光学字符识别),是一个非常复杂的深度学习问题,专门针对您发布的图像类型(嘈杂,低清晰度,低动态范围等)。如果您正在寻找可以直接使用此功能的香草OpenCV库,那么据我所知,还没有任何库。

检查这些链接以获取源代码和说明-

  1. OCR with pytesseract
  2. Text ROI detection using EAST
本文链接:https://www.f2er.com/3148695.html

大家都在问