如何将图像转换为字符段? [英] How to convert an image into character segments?

查看:151
本文介绍了如何将图像转换为字符段?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

通常在OCR的过程中,图像文件基本上被切割成段,每个字符被识别为段。
例如,



必须转换为类似



此外,亚洲语言(如泰卢固语)是否有任何算法可以用于此目的?

解决方案

这可以使用OpenCV轻松完成。以下是示例代码:

  import cv2 
import numpy as np

#Load图像
img = cv2.imread('sof.png')

#转换为灰度
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

#平滑图像以避免噪音
gray = cv2.medianBlur(gray,5)

#应用自适应阈值
thresh = cv2.adaptiveThreshold ,1,1,11,2)
thresh_color = cv2.cvtColor(thresh,cv2.COLOR_GRAY2BGR)

#应用一些膨胀和侵蚀来加入间隙
thresh = cv2 .dilate(thresh,None,iterations = 3)
thresh = cv2.erode(thresh,None,iterations = 2)

#查找轮廓
contoururs,hierarchy = cv2 .findContours(thresh,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)

#对于每个轮廓,找到边界矩形,并在轮廓中绘制cb的

x,y,w ,h = cv2.boundingRect(cnt)
cv2.rectangle(img,(x,y),(x + w,y + h),(0,255,0),2)
cv2.rectangle (thresh_color,(x,y),(x + w,y + h),(0,255,0),2)

#最后显示图像
cv2.imshow ',img)
cv2.imshow('res',thresh_color)
cv2.waitKey(0)
cv2.destroyAllWindows()
pre>

输出将如下所示:




Often in the process of OCR, an image file is essentially cut into segments, and each character is recgnised as a segment each. For instance,

has to be transformed to something like

Also, is there any algorithm for Asian languages like Telugu readily available for this purpose? If not, how is this done for English?

解决方案

It can be easily done using OpenCV. Below is a sample code:

import cv2
import numpy as np

# Load the image
img = cv2.imread('sof.png')

# convert to grayscale
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# smooth the image to avoid noises
gray = cv2.medianBlur(gray,5)

# Apply adaptive threshold
thresh = cv2.adaptiveThreshold(gray,255,1,1,11,2)
thresh_color = cv2.cvtColor(thresh,cv2.COLOR_GRAY2BGR)

# apply some dilation and erosion to join the gaps
thresh = cv2.dilate(thresh,None,iterations = 3)
thresh = cv2.erode(thresh,None,iterations = 2)

# Find the contours
contours,hierarchy = cv2.findContours(thresh,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)

# For each contour, find the bounding rectangle and draw it
for cnt in contours:
    x,y,w,h = cv2.boundingRect(cnt)
    cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
    cv2.rectangle(thresh_color,(x,y),(x+w,y+h),(0,255,0),2)

# Finally show the image
cv2.imshow('img',img)
cv2.imshow('res',thresh_color)
cv2.waitKey(0)
cv2.destroyAllWindows()

Output will look like below:

这篇关于如何将图像转换为字符段?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆