如何使用OpenCV和Java检测图像中的上下颠倒文本

2019年6月23日 14点热度 0条评论

我有一段时间遇到这个问题,但仍然无法解决。
我正在使用OpenCV和Java从图像中检测卡并对其进行裁剪然后进行转换,如果原始图像方向正确,一切都会很好。现在的任务是:如何将图像旋转180度?或者如何检测文本是否上下颠倒,然后我们可以将其旋转到正确的方向。
我从Java中的OpenCV获得的结果是Mat对象包含裁剪的卡片。
是否有人以前曾面对并解决过此问题,或有任何想法请引导我找到正确的解决方案。
提前致谢。

这是我从原件裁剪的样本图像
Sample 1
Sample 2

解决方案如下:

只需运行您的代码,如果它在第一遍没有发现任何问题,那么您可以旋转图像并重试?或者,您可以尝试仅扫描卡的一小部分,然后确定卡是否正确朝上。

坐下来自己思考如何最好地做到这一点将是值得的。

至于旋转图像,您是否尝试过查找?因为如果您使用的是缓冲图像,则可以使用简单的AffineTransform完成旋转:

AffineTransform at = AffineTransform.getRotateInstance(Math.PI, image.getWidth()/2, image.getHeight()/2.0);
BufferedImage myRotatedImage = createTransformed(image, at);

编辑:对于旋转
Mat对象,您可以使用:


Imgproc.warpAffine(Mat source, Mat dest, Mat M, Size size)

来自:
http://docs.opencv.org/java/3.0.0/