2017-08-08 499 views
0


我面对这个问题一段时间,仍然无法弄清楚。
我使用OpenCV和Java从图像中检测到卡片,然后将其裁剪出来,如果原始图像的方向正确,每件事情都会很好。目前的任务是:如何以180度旋转图像?或者如何检测文本是颠倒的,那么我们可以将其旋转到正确的方向。
我从Java中的OpenCV得到的结果是Mat对象包含裁剪卡片。
有没有人遇到过并解决过这个问题,或有任何想法,请直接给我正确的解决方案。
在此先感谢。如何使用OpenCV和Java在图像/颠倒图像中检测颠倒的文本

这里是样本图像,我从原件
Sample 1
Sample 2

回答

0

只要运行你的代码裁剪,如果发现没有在第一轮那么你可以旋转图像,然后再试一次?或者你可以尝试只扫描一小部分卡,然后你可以确定卡是否正确。

它会付出代价来坐下来思考如何做到最好。

至于旋转图像,你有没有试过查找它?因为如果你使用的是缓冲图像,然后旋转可以用一个简单的AffineTransform来完成:

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

编辑:对于旋转Mat对象,你可以使用:http://docs.opencv.org/java/3.0.0/

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

来自

+0

感谢您的回答,我有一些可能的解决方案,但计算需要时间。例如我可以尝试OCR图像的内容(只是2次,并获得最佳的投票是正确的方向),我只是想找到另一个强大的方法来处理这个任务更好 –

+0

我想你误解我的问题,重点是我知道如何在OpenCV和Java中旋转图像/ Mat对象,但是我想知道结果图像是否处于正确的方向或者不在下一步(OCR步骤)。 –