zoukankan      html  css  js  c++  java
  • 浅析threshold函数(二值化)

    threshold函数是对于图像二值化的处理。

    首先,二值化就是对于一个图像,确定一个像素值,把大于这个像素的所有像素点处理成一个数值,小于它的也确定成一个数值。

    threshold就是这么一个函数,它包含了5个参数

    threshold(img, gray_binary, 125, 233, THRESH_BINARY_INV);

    这里是书上给的用法,但是属实是有些生涩难懂。这里给出我的理解

    第一个参数:原始图片

    第二个参数:处理后的图片

    第三个参数:设定的像素阈值

    第四个参数:要处理成的最大值

    第五个参数:处理类型。

    其中,第五个参数(处理类型)分为图中图所示,翻译以下:

    THRESH_BINARY//大于它的变成第四个参数设置的最大值,小于它的变成最小值(0)
    THRESH_BINARY_INV//大于它的变成最小值,小于它的变成最大值
    THRESH_TRUNC//大于它的变成阈值,小于它的不变
    THRESH_TOZERO//大于它的变为0,小于它的不变
    THRESH_TOZERO_INV//小于它的变为0,大于它的不变
    //其中,inv类似于取反,所有第一个和第二个,第四个和第五个,就是相反的操作。

    更加简明的话,如图所示叭:

    #include <iostream>
    #include <opencv2/core.hpp>
    #include <opencv2/highgui.hpp>
    #include <opencv2/imgproc.hpp>
    using namespace std;
    using namespace cv;
    int main(int argc,char** argv) 
    {
        Mat img = imread("1.jpg");
        Mat gray_binary;
        //灰度图像二值化
        //THRESH_BINARY_INV--灰度大于阈值125则设为0, 其他值为最大
        threshold(img, gray_binary, 125, 233, THRESH_BINARY_INV);//最大设为233
        imshow("【原始图】", img); 
        imshow("【效果图】", gray_binary);//grar_binary为二值化后图片
        waitKey(0);
        return 0;
    }

    最终效果:

  • 相关阅读:
    oracle 常用函数
    css 让div 置于最顶层而不被其他东西挡住
    hibernate学习
    css居中参考
    log4j 将日志文件输出到web-inf下的解决办法
    mybatis 传递多个值的解决办法
    web项目中的路径问题
    sring 监听器
    struts2返回json字符串
    java 需要看的书籍
  • 原文地址:https://www.cnblogs.com/ajmddzp/p/15780537.html
Copyright © 2011-2022 走看看