兩張圖片對比
private void matchBitmaps(){
Mat srcMat=new Mat();
Mat endMat=new Mat();
Mat output = new Mat();
Mat srcMask = new Mat();
Mat endMask = new Mat();
MatOfKeyPoint srcKeyPoint = new MatOfKeyPoint();
MatOfKeyPoint endKeyPoint = new MatOfKeyPoint();
MatOfDMatch matches = new MatOfDMatch();
Utils.bitmapToMat(srcBitmap, srcMat);
Utils.bitmapToMat(endBitmap, endMat);
Imgproc.cvtColor(srcMat, srcMat, Imgproc.COLOR_RGB2GRAY);
Imgproc.cvtColor(endMat, endMat, Imgproc.COLOR_RGB2GRAY);
FeatureDetector endDetector = FeatureDetector
.create(FeatureDetector.ORB);
endDetector.detect(endMat, endKeyPoint);
DescriptorExtractor endDescriptor = DescriptorExtractor
.create(DescriptorExtractor.ORB);
endDescriptor.compute(endMat, endKeyPoint, endMask);
FeatureDetector srcDetector = FeatureDetector
.create(FeatureDetector.ORB);
srcDetector.detect(srcMat, srcKeyPoint);
DescriptorExtractor srcDescriptor = DescriptorExtractor
.create(DescriptorExtractor.ORB);
srcDescriptor.compute(srcMat, srcKeyPoint, srcMask);
DescriptorMatcher descriptormatcher = DescriptorMatcher
.create(DescriptorMatcher.BRUTEFORCE_HAMMING);
descriptormatcher.match(srcMask, endMask, matches);
Features2d.drawMatches(srcMat,srcKeyPoint,endMat, endKeyPoint, matches, output);
Bitmap matchBitmap= Bitmap.createScaledBitmap(srcBitmap, output.width(),output.height(), false);
Utils.matToBitmap(output, matchBitmap);
image1.setImageBitmap(matchBitmap);
}
邊緣檢測
Mat rgbMat = new Mat();
Mat grayMat = new Mat();
Bitmap grayBitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), Bitmap.Config.ARGB_8888);
Utils.bitmapToMat(srcBitmap, rgbMat);
Imgproc.Canny(rgbMat, grayMat,0,150);
Utils.matToBitmap(grayMat, grayBitmap);
高斯模糊
Mat rgbMat = new Mat();
Mat grayMat = new Mat();
Bitmap grayBitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), Bitmap.Config.RGB_565);
Utils.bitmapToMat(srcBitmap, rgbMat);
Imgproc.cvtColor(rgbMat, grayMat,type);
Utils.matToBitmap(grayMat, grayBitmap);
後面有時間在繼續做吧