Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何取消查看和识别图像中的短文本_Python_Opencv_Text Recognition - Fatal编程技术网

Python 如何取消查看和识别图像中的短文本

Python 如何取消查看和识别图像中的短文本,python,opencv,text-recognition,Python,Opencv,Text Recognition,我正在从事一个文本识别项目,该项目需要检测和识别图像中的文本。 图像中有两条短线文本(320px*320px)。第一行是国家代码的缩写。第二行是拨号代码。整个图像可以以任意角度旋转。下面是一些例子 图像一 图二 图三 由于文本很短,hough变换(检测长线)、傅里叶变换和轮廓投影等方法无法很好地执行。我使用轮廓检测来检测文本块的角度。但是,如果文本块是三角形的,则无法正常工作。此外,如果文本块为矩形,则在反扭曲后,文本将倒置、左侧朝下和右侧朝下。有人能建议吗 file = r"/home/

我正在从事一个文本识别项目,该项目需要检测和识别图像中的文本。 图像中有两条短线文本(320px*320px)。第一行是国家代码的缩写。第二行是拨号代码。整个图像可以以任意角度旋转。下面是一些例子

图像一

图二

图三

由于文本很短,hough变换(检测长线)、傅里叶变换和轮廓投影等方法无法很好地执行。我使用轮廓检测来检测文本块的角度。但是,如果文本块是三角形的,则无法正常工作。此外,如果文本块为矩形,则在反扭曲后,文本将倒置、左侧朝下和右侧朝下。有人能建议吗

file = r"/home/hank/Desktop/af_36.jpg"
image = cv2.imread(os.path.normpath(file))
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

blur = cv2.GaussianBlur(gray, (3, 3), 0)
_, thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)

kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3))
dilation = cv2.dilate(thresh, kernel, iterations=1)

contours, hierarchy = cv2.findContours(dilation, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

contours = [contours[i] for i in range(len(contours)) if
                 not (hierarchy[0][i][3] >= 0 and hierarchy[0][i][2] == -1)]

angles = []

for cnt in contours:
    rect = cv2.minAreaRect(cnt)
    angles.append(rect[2])

angle = sum(angles)/len(angles)

print(angle)

如果你不检测文本,试着检测两个文本之间的空格(上下)

(1) 大多数情况下是这样的

设置图像阈值以查找文本(word=1而word=0)。然后查找重新折叠框的中心点。中间点x和y应为空

试着旋转一条以中间点为中心的线(长度相同),宽度jsut正好接触顶部和底部文本。结果是最大非零像素量(意味着线没有与文本重叠)为1,应该是文本所处的角度

(2) 使用旧的人脸检测路由。 使用harr-like图案,以N旋转角度匹配模板

对于所有x、y、角度的循环

然后逐渐细化

例如,这是harr功能的角度0版本。通过模板匹配将其与图像对齐。然后对齐旋转图案并添加到上一个角度模板匹配图像的顶部。连接所有模板匹配结果并运行最小-最大值以找到最高回报


谢谢您提供的信息。(1)有时两行之间可能没有空格。(2)此外,文本将采用不同的字体。模板匹配仍然可以解决此问题吗?字体没有问题。没有空格则需要更多类型的haar。