所以你确实已经有了周围的盒子,它们是
包装文字对吗? (我在 cmets 读过。)
所以剩下的问题是
A) 提取您的感兴趣区域 (ROI)
请注意有趣的角落寻址方法。
B) 将你的字母与背景分开
我会在这里使用simple binary threshold.
唯一的挑战是为所有图片找到全局最优阈值
请参阅下面的 A 和 B 的 python 代码:
import numpy as np
from matplotlib import pyplot as plt
img = cv.imread('kjgqd.png',0)
img = cv.medianBlur(img,5)
#extract roi with box coorindates
imgROI = img[75:230,103:330]
ret,th1 = cv.threshold(imgROI,127,255,cv.THRESH_BINARY)
titles = ['Original Image', 'Global Thresholding (v = 127)']
images = [imgROI, th1]
for i in range(0,2):
plt.subplot(2,1,i+1),plt.imshow(images[i],'gray')
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
plt.show()
输入:
投资回报率削减:
输出:
C) 如何将文字从图片转换为书面语言?
欢迎来到 OCR 的大世界
这是您任务中最复杂的问题。
我真的建议您使用
像 Tesseract 这样的框架
一个很好的介绍是here
在最坏的情况下,您应该开始训练自己的模型来检测您的语言。如果您的语言或字体集还没有被 Tesseract 很好地支持,我只会推荐这个。
查看操作方法1
和2
出于教育原因,并且仅针对该用例,我建议您
从话题OCR and the famous Mnist example开始
Here 很好地概述了如何从图片中获取文本的可能方法。
D)翻译你的文字
E) 把英文翻译成图片使用方法
cv.text 喜欢:
import numpy as np
import cv2
#white dummy picture
img = np.zeros((600,200,3), np.uint8)
img.fill(255)#we make it white
# Write some Text
font = cv2.FONT_HERSHEY_SIMPLEX
bottomLeftCornerOfText = (10,500)
fontScale = 1
fontColor = (0,0,0)
lineType = 2
cv2.putText(img,'Hello World!',
bottomLeftCornerOfText,
font,
fontScale,
fontColor,
lineType)
#Display the image
cv2.imshow("img",img)
cv2.waitKey(0)