我正在制作一个Android应用程序,以从图像中检测多个对象,然后处理这些对象并将它们与参考对象进行比较以检测异常。 我在python中测试了不同的图像边缘检测器,Prewitt运算符为我提供了最佳结果,如下所示 https://i.imgur.com/4iwOx9s.png 对于android系统,我使用了Canny边缘检测器,但结果不如Prewitt所示,如下所示 https://i.imgur.com/C841Qup.png
这是我尝试过的Java代码
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.coffret);
//compress bitmap
bmp = getResizedBitmap(bmp, 500);
Mat rgbMat = new Mat();
Utils.bitmapToMat(bmp, rgbMat);
Mat grayMat = new Mat();
Mat bwMat = new Mat();
Imgproc.cvtColor(rgbMat, grayMat, Imgproc.COLOR_RGB2GRAY);
Imgproc.equalizeHist(grayMat, grayMat);
Imgproc.adaptiveThreshold(grayMat, grayMat, 255, Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY, 15, 40);
Imgproc.Canny(grayMat, bwMat, 50, 200, 3, false);
Utils.matToBitmap(bwMat, bmp);
Matrix matrix = new Matrix();
matrix.postRotate(180);
bmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true);
imgView.setImageBitmap(bmp);
您会注意到,使用Prewitt运算符可以使文本清晰且轮廓更清晰。 我在做什么错了?