Opencv 用印刷体字母处理OCR图像

Opencv 用印刷体字母处理OCR图像,opencv,tesseract,Opencv,Tesseract,我想从一个游戏中OCR这个战斗日志: 作战日志图像 原始图像有块文本字体,所以在阈值化后我反转了颜色。现在我想删除“黑色”背景(但不是黑色文本),但我不知道如何在OpenCV中实现这一点。之后,我想我会锐化文本,使其更厚,以获得更好的OCR 我可以问一下我怎么做吗?试试这个 import cv2 import numpy as np img = cv2.imread("1.png") gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) invert0

我想从一个游戏中OCR这个战斗日志:

作战日志图像

原始图像有块文本字体,所以在阈值化后我反转了颜色。现在我想删除“黑色”背景(但不是黑色文本),但我不知道如何在OpenCV中实现这一点。之后,我想我会锐化文本,使其更厚,以获得更好的OCR

我可以问一下我怎么做吗?

试试这个

import cv2
import numpy as np

img = cv2.imread("1.png")

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

invert0 = cv2.bitwise_not(gray)

_,thresh = cv2.threshold(invert0,128,255,cv2.THRESH_BINARY)

invert1 = cv2.bitwise_not(thresh)

im2, contours, hierarchy = cv2.findContours(invert1,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

mask = np.zeros(gray.shape, dtype="uint8")
for i in range(len(contours)):
    if(hierarchy[0][i][3]==-1): #contour has no parent (most outer contour)
        cv2.fillPoly(mask, pts =[contours[i]], color=255)

invert2 = cv2.bitwise_not(mask)
res = invert2 + invert1

cv2.imshow("img", img)    
cv2.imshow("gray", gray)   
cv2.imshow("invert0", invert0) 
cv2.imshow("thresh", thresh) 
cv2.imshow("invert1", invert1) 
cv2.imshow("invert2", invert2)
cv2.imshow("mask", mask)
cv2.imshow("res", res)

cv2.waitKey()
cv2.destroyAllWindows() 

我一直在关注你的个人资料。您对简单图像处理任务的回答非常有用。谢谢!从截图上看,它显然是有效的,所以我将把它标记为可接受的答案。为了理解全部逻辑,我有很多东西要研究。