使用OpenCV对图片进行二值化和去燥处理

栏目: 编程工具 · 发布时间: 7年前

内容简介:最近做的项目中有使用到 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;
}

最后来看一下最终的效果吧

原图:

使用OpenCV对图片进行二值化和去燥处理

二值化:

使用OpenCV对图片进行二值化和去燥处理

去燥:

使用OpenCV对图片进行二值化和去燥处理


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

《裂变:秒懂人工智能的基础课》

《裂变:秒懂人工智能的基础课》

王天一 / 电子工业出版社·博文视点 / 2018-6-13 / 59.00元

人工智能是指通过普通计算机程序实现的人类智能技术,这一学科不仅具有非凡的科学意义,对人类自身生存方式的影响也在不断加深。本书作为人工智能领域的入门读物,内容围绕人工智能的核心框架展开,具体包括数学基础知识、机器学习算法、人工神经网络原理、深度学习方法与实例、深度学习之外的人工智能和实践应用场景等模块。本书力图为人工智能初学者提供关于这一领域的全面认识,也为进一步的深入研究建立坚实的基础。一起来看看 《《裂变:秒懂人工智能的基础课》》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具