我正在尝试从这张图片中提取文字
。
我尝试使用OpenCV调整对比度和亮度,平滑度(例如GaussianBlur,中位数模糊)和阈值技术(例如Otsu),仍然有很多残留噪声。
还有什么我可以尝试的吗?
我正在尝试从这张图片中提取文字
。
我尝试使用OpenCV调整对比度和亮度,平滑度(例如GaussianBlur,中位数模糊)和阈值技术(例如Otsu),仍然有很多残留噪声。
还有什么我可以尝试的吗?
您可以尝试结合使用高斯模糊,阈值处理和形态学运算来隔离文本。这是管道
模糊->
阈值->
打开->
扩展->
按位与
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库,那么据我所知,还没有任何库。
检查这些链接以获取源代码和说明-