当前位置: 首页 > 知识库问答 >
问题:

基于OpenCV的Tesseract OCR七段图像预处理

姜玉泽
2023-03-14
    null
  ret, i = video.read()
  h,width,channels = i.shape #get dimensions

  g = cv2.cvtColor(i,cv2.COLOR_BGR2GRAY)
  histeq=cv2.equalizeHist(g) #spreads pixel values across entire spectrum
  _,t = cv2.threshold(histeq,150,225,cv2.THRESH_BINARY) #thresholds histeq

  cropped = t[int(0.4*h):int(.6*h), int(0.1*width):int(0.9*width)]
  rotated = imutils.rotate_bound(cropped, angle)
  resized = imutils.resize(rotated,height=resizing_height)

有些数字比其他数字更好用--例如,'1'似乎有很多麻烦。出现在“+”或“-”后面的数字通常不显示出来,“+”通常显示为“-”。我也玩了一下阈值。

最后三个部分是因为我的视频样本,我一直在画有点歪斜。我可以尝试使用一些更好的数据,我也可以尝试在标准的“letsgoDigital”朗上制作自己的训练数据。虽然我觉得我没有以最好的方式进行图像处理,但我希望得到一些指导。

我计划使用某种程度的边缘检测自动裁剪到显示,但现在我只是试图保持简单,手动得到我想要的结果。我在http://imgur.com/a/vnqgp上传了经过不同程度图像处理的示例图像。这很难,因为有时我从tesseract那里得到准确的答案,而其他时候什么也得不到。然而,相机或光线水平并没有真正改变,这让我认为这是我的训练数据的问题。任何关于我该去哪里的建议或方向都将不胜感激!!谢谢。

共有1个答案

程祺
2023-03-14

对于读取七个段数字,像tesseract这样的普通OCR程序通常不能很好地工作,因为单个段之间存在空间。您应该尝试ssocr,它是专门为读取七段数字而制作的。但是,预处理需要做得更好,因为ssocr希望输入是由7个段数字组成的单行。

参考资料-https://www.unix-ag.uni-kl.de/~auerswal/ssocr/

用法示例-http://www.instructables.com/id/raspberry-pi-reading-7-segment-displays/

 类似资料:
  • 我试图开发一个应用程序,使用Tesseract从手机摄像头拍摄的文件中识别文本。为了更好的识别,我使用OpenCV对图像进行预处理,使用高斯模糊和阈值方法进行二值化,但结果很糟糕。 我可以使用哪些其他过滤器来使图像对Tesseract更具可读性?

  • 我正在尝试重新创建在原始出版物“用于图像识别的深度残差学习”中所做的对ImageNet数据集的数据预处理。正如他们的论文第3.4节所说:“我们对ImageNet的实现遵循了[21,41]中的实践。图像的大小被调整,其短边在[256,480]中随机采样以进行缩放[41]。从图像或其水平翻转中随机采样224×224裁剪,减去每个像素的平均值[21]。使用了[21]中的标准颜色增强。” 我已经弄清楚了随

  • 我试图开发一个简单的车牌识别PC应用程序(Java+OpenCV+Tess4j)。图像不是真的好(在进一步,他们将是好的)。我想为tesseract预处理图像,我被困在车牌检测(矩形检测)上。 我的脚步: 1)源图像 我用油漆从图像(第四步后)中裁剪出所需的区域,并得到: 然后我做了OCR(通过tesseract,tess4j): 而且得到了(足够好?)结果-“Y841OX EH”(几乎正确)

  • @subpage tutorial_py_colorspaces_cn 学习如何将图像从一个颜色空间变换到另外一个。 另外,我们还将学习在一段视频中追踪一个有颜色的物体。 @subpage tutorial_py_geometric_transformations_cn 学习对图像进行不同的几何变换,像旋转、平移等等。 @subpage tutorial_py_thresholding_cn 学习

  • [source] ImageDataGenerator 类 keras.preprocessing.image.ImageDataGenerator(featurewise_center=False, samplewise_center=False,

  • 目标 访问像素值并修改它们 访问图像属性 设置图像区域(ROI) 分割和合并图像 本节中几乎所有的操作主要涉及到Numpy而不是OpenCV。需要熟悉Numpy才能用OpenCV编写更好的代码。 1、获取并修改像素值 读取一副图像,根据像素的行和列的坐标获取它的像素值,对于RGB图像而言,返回RGB的值,对于灰度图则返回灰度值 import cv2 import numpy img = cv2.i