我目前正在开发一个android应用程序,它应该能够从拍摄的照片中检测到二维码。不需要解码二维码,因为只需要对相机进行校准即可。我正在使用openCV,当我尝试从原始下载的二维码图片中检测二维码时,它工作正常。这是我使用的代码:
bitmap= BitmapFactory.decodeResource(getResources(),R.drawable.qrcodemitzeugs);
Mat img =new Mat();
Utils.bitmapToMat(bitmap,img)
Mat points= new Mat();
QRCodeDetector detector=new QRCodeDetector();
boolean data = detector.detect(img, points);但当我在用智能手机相机拍摄的照片上尝试相同的代码时,二维码没有被检测到。我寻找了一个解决方案,发现可能是对比度不够高,所以使用以下代码将图片转换为二进制:
Imgproc.cvtColor(img,img2,Imgproc.COLOR_BGR2GRAY);
Imgproc.threshold(img2,img2,100,255,Imgproc.THRESH_BINARY);它返回了整个黑白图像,但仍然没有检测到二维码。我做错了什么吗?或者这个问题有解决方案吗?
One of the images i used我必须在上传之前调整图片的大小
发布于 2019-12-03 17:01:18
因此,我解决了我的问题,通过将Mat的大小调整为最大1200x1200。显然,OpenCV QRCodeDetector只能处理大约85x85和大约1200x1200之间的垫,其中二维码本身必须至少有大约80x80的大小。我用原始二维码的图像进行了测试,它的大小是600x600。我调整了它的大小,直到二维码不再被检测到。
https://stackoverflow.com/questions/59124533
复制相似问题