Android 使用OpenCV 进行书法字体重影比对

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010095372/article/details/79175355
最近在做一个书法APP,要实现手机拍摄自己写的字和临帖上的字进行比对,思想就是拍摄的图,和字贴上的图进行想减,计算减完之后的图上面白色像素的多少了

1 先找到拍摄的图片然后再对其进行处理

//先获取Bitmap
Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uritempFile));
//转成我们喜闻乐见的Mat格式
Mat mat_src = new Mat(bitmap.getWidth(), bitmap.getHeight(), CvType.CV_8UC4);
Utils.bitmapToMat(bitmap, mat_src);
//单通道的Mat
mat_gray = new Mat(bitmap.getWidth(), bitmap.getHeight(), CvType.CV_8UC1);
//把图片进行灰度化处理,并且赋值mat_gray
Imgproc.cvtColor(mat_src, mat_gray, Imgproc.COLOR_BGRA2GRAY, 1);
//灰度化之后,进行二值化,根据需要进行二值化反色
Imgproc.threshold(mat_gray,mat_gray,155,255,Imgproc.THRESH_BINARY);
//反色代码
Core.bitwise_not(mat_gray,mat_gray);
//截取mat_src上感兴趣的部分
mat_src.copyTo(mat_gray,mat_gray);
//Bitmap.Config.ARGB_4444这个可以透明
Bitmap bmp_dst = Bitmap.createBitmap(mat_gray.cols(), mat_gray.rows(), Bitmap.Config.ARGB_4444);
Utils.matToBitmap(mat_gray, bmp_dst);
//图像添加上去
img1.setImageBitmap(bmp_dst);

2 在滑动的时候也要进行实时处理
TouchImageView.OnTouchImageViewListener 这个接口

//滑动的时候要拿到当前展示的Bitmap,就用下面这个方法走就行,截取的恰巧就是展示出来的内容。
img1.setDrawingCacheEnabled(true);
Bitmap obmp = Bitmap.createBitmap(img1.getDrawingCache());
img1.setDrawingCacheEnabled(false);
//对上面的obmp再进行处理就好了

3 Mat基本运算,两矩阵想减
Core.absdiff(mat1,mat2,dst);
mat1和mat2做减法去绝对值,dst就是结果

下面就是界面了
这里写图片描述

猜你喜欢

转载自blog.csdn.net/u010095372/article/details/79175355