gpt4 book ai didi

python - 如何从图像中只提取字符?

转载 作者:太空狗 更新时间:2023-10-30 01:26:01 24 4
gpt4 key购买 nike

我有这种类型的图像,我只想从中提取字符。

enter image description here

二值化后,我得到了这张图片

img = cv2.imread('the_image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 9)

enter image description here

然后在这张图片上找到轮廓。

(im2, cnts, _) = cv2.findContours(thresh.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
cnts = sorted(cnts, key=cv2.contourArea, reverse=True)
for contour in cnts[:2000]:
x, y, w, h = cv2.boundingRect(contour)
aspect_ratio = h/w
area = cv2.contourArea(contour)
cv2.drawContours(img, [contour], -1, (0, 255, 0), 2)

我得到了

enter image description here

我需要一种方法来过滤轮廓,以便它只选择字符。这样我就可以找到边界框并提取 roi。

我可以找到轮廓并根据区域大小过滤它们,但源图像的分辨率不一致。这些图像是从移动相机拍摄的。

也因为盒子的边界是断开的。我无法准确检测到盒子。

编辑:

如果我取消选择纵横比小于 0.4 的框。然后它在某种程度上起作用。但我不知道它是否适用于不同分辨率的图像。

for contour in cnts[:2000]:
x, y, w, h = cv2.boundingRect(contour)
aspect_ratio = h/w
area = cv2.contourArea(contour)

if aspect_ratio < 0.4:
continue
print(aspect_ratio)
cv2.drawContours(img, [contour], -1, (0, 255, 0), 2)

enter image description here

最佳答案

没那么难...

import cv2

img = cv2.imread('img.jpg')

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

ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU)
cv2.imshow('thresh', thresh)

im2, ctrs, hier = cv2.findContours(thresh.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
sorted_ctrs = sorted(ctrs, key=lambda ctr: cv2.boundingRect(ctr)[0])

for i, ctr in enumerate(sorted_ctrs):
x, y, w, h = cv2.boundingRect(ctr)

roi = img[y:y + h, x:x + w]

area = w*h

if 250 < area < 900:
rect = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.imshow('rect', rect)

cv2.waitKey(0)

结果

res

您可以根据需要调整代码(这里它可以使用原始图像保存 ROI;对于最终的 OCR 识别,您必须以二进制格式保存它们 - 比按区域排序更好的方法可用)

来源:Extract ROI from image with Python and OpenCV以及我的一些知识。

开个玩笑,看看我的问题/答案。

关于python - 如何从图像中只提取字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46971769/

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