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

tesseract和opencv给出错误-图像太大

常智勇
2023-03-14

我有一个在docker容器中运行的spring-boot应用程序,其中安装了tesseract。

在Java程序中,我使用opencv预处理图像,如下所示

MatOfByte mat = new MatOfByte(myByteArraySource);
Mat adaptive = new Mat();
Imgproc.adaptiveThreshold(mat, adaptive, 255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C, Imgproc.THRESH_BINARY, 13, 7);

// convert to BufferedImage
MatOfByte matOfByte = new MatOfByte();
Imgcodecs.imencode(".png", adaptive, matOfByte);
BufferedImage bf = ImageIO.read(new ByteArrayInputStream(matOfByte.toArray()));

// run tesseract
tesseract.doOCR(bf);

但是运行 tesseract.doOCR(bf); 给出错误: 图像太大: (1, 146327)

知道我哪里做错了吗?奇怪的是文件大小只有146kb,所以我不知道为什么宇宙魔方认为它太大了?

此外,如果我删除adaptiveThreshold步骤并直接在mat上执行<code>imencode</code>,则tesseract扫描会起作用。

我试过openjdk:11和openjdk:8-jdk-alpine,它们都给出了相同的错误。

感谢任何帮助。

共有1个答案

子车征
2023-03-14

所以我意识到我的错误是将错误(1,146327)解释为文件大小,实际上是尺寸。

我需要使用imdecode函数,而不是直接创建和使用MatOfByte

< code > Mat Mat = img codecs . im decode(new MatOfByte(OS . tobytearray(),...)

这将正确返回大小(例如400400而不是1146327)

 类似资料:
  • 我收到了来自tesseract的5 MB大小图像的以下错误。 Tesseract开源OCR引擎v3.01与Leptonica第0页图像太大:(39667,56133)处理过程中出现错误。 文件大小是否有限制,或者是否有解决此问题的参数。 感谢您的帮助。

  • 我有一个图像是6400×3200,而我的屏幕是1280×800。因此,图像需要调整大小,仅供显示。我使用的是Python和OpenCV 2.4.9。根据OpenCV文档, 如果需要显示大于屏幕分辨率的图像,则需要在IMShow之前调用namedWindow(“”,WINDOW_NORMAL)。

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

  • 我在mac os中使用pip安装opencv python。现在是cv2。imshow函数给出以下错误 OpenCV错误:未指定的错误(函数未实现。使用Windows、GTK 2. x或Carbon支持重建库。如果你在Ubuntu或Debian上,安装libgtk2.0-dev和pkg-config,然后在cvShowImage中重新运行cmake或配置脚本) 我如何解决这个问题?为什么pip不检

  • null 有些数字比其他数字更好用--例如,'1'似乎有很多麻烦。出现在“+”或“-”后面的数字通常不显示出来,“+”通常显示为“-”。我也玩了一下阈值。 最后三个部分是因为我的视频样本,我一直在画有点歪斜。我可以尝试使用一些更好的数据,我也可以尝试在标准的“letsgoDigital”朗上制作自己的训练数据。虽然我觉得我没有以最好的方式进行图像处理,但我希望得到一些指导。 我计划使用某种程度的边

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