gpt4 book ai didi

android - 在 OpenCV 中查找带有文本行的轮廓

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:45 25 4
gpt4 key购买 nike

我正在编写一个文本识别程序,但我在排序轮廓时遇到了问题。该程序对一行文本运行良好,但是当涉及到整个文本 block 时,我的程序在 80% 的情况下都无法检测到文本行。提取一行文本然后提取所有其他行(一次一个)的真正有效方法是什么?

我想要实现的目标:

enter image description here

最佳答案

有一系列步骤可以实现这一点:

  1. 找到对图像进行二值化的最佳阈值。我使用了 Otsu 阈值。
  2. 找到合适的形态学操作,沿着水平方向形成一个单一的区域。选择宽度大于高度的内核。
  3. 在生成的轮廓上绘制边界框

更新

实现如下:

x = 'C:/Users/Desktop/text.jpg' 

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

#--- performing Otsu threshold ---
ret,thresh1 = cv2.threshold(gray, 0, 255,cv2.THRESH_OTSU|cv2.THRESH_BINARY_INV)
cv2.imshow('thresh1', thresh1)

enter image description here

#--- choosing the right kernel
#--- kernel size of 3 rows (to join dots above letters 'i' and 'j')
#--- and 10 columns to join neighboring letters in words and neighboring words
rect_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (15, 3))
dilation = cv2.dilate(thresh1, rect_kernel, iterations = 1)
cv2.imshow('dilation', dilation)

enter image description here

#---Finding contours ---
_, contours, hierarchy = cv2.findContours(dilation, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

im2 = img.copy()
for cnt in contours:
x, y, w, h = cv2.boundingRect(cnt)
cv2.rectangle(im2, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.imshow('final', im2)

enter image description here

关于android - 在 OpenCV 中查找带有文本行的轮廓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50777688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com