美文网首页
threshold(图像二值化)

threshold(图像二值化)

作者: itfitness | 来源:发表于2019-08-06 14:53 被阅读0次

概念

图像的二值化就是将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效果。

函数讲解

●函数原型
○c++

double threshold( InputArray src, OutputArray dst,
                               double thresh, double maxval, int type )

○Android

double threshold(Mat src, Mat dst, double thresh, double maxval, int type)

●参数解释
○src:源图像Mat对象
○dst:目标图像Mat对象
○thresh:设定的阈值
○maxval:是当灰度值大于(或小于)阈值时将该灰度值赋成的值
○type:二值化的方式,常用的有如下5种。

CV_THRESH_BINARY      =0,  /**大于阈值的部分被置为255,小于部分被置为0 */
CV_THRESH_BINARY_INV  =1,  /**大于阈值部分被置为0,小于部分被置为255    */
CV_THRESH_TRUNC       =2,  /**大于阈值部分被置为threshold,小于部分保持原样   */
CV_THRESH_TOZERO      =3,  /**小于阈值部分被置为0,大于部分保持不变*/
CV_THRESH_TOZERO_INV  =4,  /**大于阈值部分被置为0,小于部分保持不变 */

二值化效果图

●原图



●CV_THRESH_BINARY



●CV_THRESH_BINARY_INV

●CV_THRESH_TRUNC



●CV_THRESH_TOZERO

●CV_THRESH_TOZERO_INV

函数使用

●c++中

#include<opencv2/opencv.hpp>
using namespace cv;
int main() {
    Mat src = imread("C:/Users/Administrator/Desktop/txyzm.png");//引入源图像
    if (src.empty()) {
        return -1;
    }
    Mat graySrc,dst;
    cvtColor(src, graySrc,CV_BGR2GRAY);//转换为灰度图像
    threshold(graySrc, dst, 170, 255, CV_THRESH_BINARY);//图像二值化
    imshow("dst", dst);//展示目标图像
    waitKey(0);
    return 0;
}

●Android中

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_beauty);//获取源图像Bitmap对象
Mat src = new Mat();
Mat dst = new Mat();
Utils.bitmapToMat(bitmap,src);//Bitmap转换为Mat对象
Imgproc.cvtColor(src,dst,Imgproc.COLOR_RGBA2GRAY);//颜色空间转换
Imgproc.threshold(dst,dst,170,255,Imgproc.THRESH_BINARY);//图像二值化
Utils.matToBitmap(dst,bitmap);//Mat转换为Bitmap对象
imageView.setImageBitmap(bitmap);

相关文章

网友评论

      本文标题:threshold(图像二值化)

      本文链接:https://www.haomeiwen.com/subject/lqnidctx.html