内容简介:最近做的项目中有使用到 OpenCV ,并且利用了 OpenCV 对图片做一些简单的处理。所以今天打算记录一下一些常用的 OpenCV 操作。以下的 OpenCV 代码都是基于 OpenCV v3.3.0 aar 版本所谓的二值化,就是将图片上的像素点的灰度值设置为0或255,也就是将整个图片呈现出明显的只有黑和白的视觉效果。
最近做的项目中有使用到 OpenCV ,并且利用了 OpenCV 对图片做一些简单的处理。所以今天打算记录一下一些常用的 OpenCV 操作。
以下的 OpenCV 代码都是基于 OpenCV v3.3.0 aar 版本
二值化
所谓的二值化,就是将图片上的像素点的灰度值设置为0或255,也就是将整个图片呈现出明显的只有黑和白的视觉效果。
public static Bitmap binarization(Bitmap bitmap) {
// 创建一张新的bitmap
Bitmap result = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
Mat origin = new Mat();
Mat gray = new Mat();
Mat out = new Mat();
Utils.bitmapToMat(bitmap, origin);
Imgproc.cvtColor(origin, gray, Imgproc.COLOR_RGB2GRAY);
// 二值化处理
Imgproc.adaptiveThreshold(gray, out, 255.0D, Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY, 25, 10.0D);
Utils.matToBitmap(out, result);
origin.release();
gray.release();
out.release();
return result;
}
去燥
如果发现二值化后燥点比较多,这时候就需要使用去燥处理了。其中参数 d 为去燥的强度。
public static Bitmap denoising(Bitmap bitmap, int d) {
Bitmap result = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.RGB_565);
Mat origin = new Mat();
Mat gray = new Mat();
Mat bf = new Mat();
Mat out = new Mat();
Utils.bitmapToMat(bitmap, origin);
Imgproc.cvtColor(origin, gray, Imgproc.COLOR_RGB2GRAY);
// 去燥
Imgproc.bilateralFilter(gray, bf, d, (double) (d * 2), (double) (d / 2));
Imgproc.adaptiveThreshold(bf, out, 255.0D, Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY, 25, 10.0D);
Utils.matToBitmap(out, result);
origin.release();
gray.release();
bf.release();
out.release();
return result;
}
最后来看一下最终的效果吧
原图:
二值化:
去燥:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
算法设计与实验题解
王晓东 / 电子工业 / 2006-9 / 46.00元
《算法设计与实验题解》是与普通高等教育“十一五”国家级规划教材《计算机算法设计与分析》(第2版)配套的辅助教材,对主教材中的全部习题做了解答或给出了解题思路提示,并对主教材的内容进行了扩展,有些主教材中无法讲述的较深入的主题以习题的形式展现出来。为了提高学生解决实际问题的能力,《算法设计与实验题解》还将主教材中的许多习题改造成算法实现题,要求学生设计出算法并上机实现。作者还结合精品课程建设,进行了......一起来看看 《算法设计与实验题解》 这本书的介绍吧!