gpt4 book ai didi

python - 如何在图像中找到数字并读取它们?

转载 作者:行者123 更新时间:2023-12-05 05:55:01 24 4
gpt4 key购买 nike

我有这张照片:

Structure with painted number

这是我感兴趣的区域:

这是我想识别和“读取”的数字。

不知道为什么用pytesseract检测不到。尽管我对其进行了预处理并使这张图像没有噪音:

preprocessed and binary image

这是我用来阅读它的配置:

  1. 只有数字;

  2. 一个字符;

    text = pytesseract.image_to_string(number_5,  lang='eng',config='--psm 10 --oem 3 -c tessedit_char_whitelist=0123456789')

而且,我仍然得到 \n\x0c 作为答案。

我想询问一些关于如何识别具有独特字符(在这种情况下只有数字)的图像的提示;

还有一个关于数字检测的问题。是否有模型可以搜索照片中的数字并返回它们所在位置的边界框?

最佳答案

检测图像中的 5 的一种方法是屏蔽图像。

你可以使用 Thresholding Operations using inRange .首先,我们需要找到阈值的上限值和下限值。经过几次尝试,我认为以下内容适合识别。

msk = cv2.inRange(hsv, np.array([0, 0, 175]), np.array([179, 255, 255]))
  • 下界是 np.array([0, 0, 175])
  • 上限是np.array([179, 255, 255])

结果将是:

enter image description here

在上面我们可以清楚地看到数字 5

现在我们可以应用以下 processing方法。

krn = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 3))
dlt = cv2.dilate(msk, krn, iterations=1)
thr = 255 - cv2.bitwise_and(dlt, msk)

结果将是:

enter image description here

现在如果我们应用 tesseract

d = pytesseract.image_to_string(thr, config="--psm 10")

result将是:

5

代码:

import cv2
import numpy as np
import pytesseract

# Load the img
img = cv2.imread("MjfJF.png")

# Cvt to hsv
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# Get binary-mask
msk = cv2.inRange(hsv, np.array([0, 0, 175]), np.array([179, 255, 255]))
krn = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 3))
dlt = cv2.dilate(msk, krn, iterations=1)
thr = 255 - cv2.bitwise_and(dlt, msk)

# OCR
d = pytesseract.image_to_string(thr, config="--psm 10")
print(d)

关于python - 如何在图像中找到数字并读取它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69557079/

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