屏幕截图里识别数字, 非常正规的白色字体,图片背景略微复杂, 但是识别率不高, 实在无法相信知名软件包居然是这个效果, 反复找资料实验后发现: 图像要 白底黑字 白底黑字 白底黑字 重要的事情说三遍, 凡是没有白底黑字的也能识别,但是效果惨不忍睹,正确率低于40%.
height, width, deep = cropImg.shape # cropImg是从图片里截取的,只包含一行数字
gray = cv.cvtColor(cropImg, cv.COLOR_BGR2GRAY) # 转灰度图
dst = np.zeros((height, width, 1), np.uint8)
for i in range(0, height): # 反相 转白底黑字
for j in range(0, width):
grayPixel = gray[i, j]
dst[i, j] = 255 - grayPixel
ret, canny = cv.threshold(dst, 0, 255, cv.THRESH_BINARY + cv.THRESH_OTSU) # 二值化
# psm 7表示单行文字,单个字符psm 10, tessedit_char_whitelist 限定只有数字
text = pytesseract.image_to_string( canny , config='--psm 7 --oem 3 -c tessedit_char_whitelist=0123456789')
print ("文字识别",text)
感谢原作者 https://blog.csdn.net/m0_38008027/article/details/105264877
不过他的代码里有一行错误, 导致依然没有白底黑字效果不佳. 网上其他的膨胀腐蚀算法我都尝试了, 真正解决问题的就是白底黑字