您的位置:首页 > 移动开发 > Android开发

Android opencv 图片处理

2016-09-09 11:07 459 查看
两张图片对比

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);
后面有时间在继续做吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息