(15)基本阈值操作

/*
 * 基本阈值操作
   *图像阈值(threshold)
            阈值是什么?简单点说是把图像分割的标尺(图像的一个像素值),这个标尺是根据什么产生的,阈值产生算法或者阈值类型(Binary segmentation)
            阈值产生的算法比较复杂,opencv给出两种阈值的算法供我们使用,
            如果不用这两种算法就可以自己指定一个阈值,它就会根据你的阈值进行分割,那么根据阈值进行分割它分割的时候就有不同的方法进行分割
    *阈值类型 5种类型 左下方的图表示图像像素点Src(x, y)值分布情况,蓝色水平线表示阈值
           -阈值二值化(threshold binary):THRESH_BINARY
                    对于输入的原图像任意一个像素若大于阈值我们取最大值

           -阈值反二值化(threshold binary Inverted):THRESH_BINARY_INV
                    大于阈值的等于0,小于阈值的让它变成最大值

            -截断(truncate)
                    超过阈值的就和阈值相等

            -阈值取零(threshold to zero)
                     如果大于阈值就等于原来的,如果小于阈值就取零、

            -阈值反取零(threshold to zero inverted)
                    大于阈值取零,小于的时候不变

    *产生阈值的两个方法
         输入一个阈值,根据它给的阈值来做,阈值怎么给它找到,opencv提供了这两个方法:这两个方法只适用于灰度图像即8位的,用彩色图像就出大问题了
         OTSU:可以帮助我们在图像上寻找一个合适的阈值,这样就不用手动输入一个阈值了 THRESH_OTSU
         TRIANGLE:三角阈值法它也是帮我们寻找阈值

    五种阈值的处理方法,两种阈值的寻找方法
*/
#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int threshold_value = 127;
int threshold_max = 255;
int type_value = 2;
int type_max = 4;
void Threshold_Demo(int, void*); //进行一个阈值操作这边把它定义到一个变量里面去
Mat src, res, src_gray;
int main()
{
    src = imread("D:/A_Graduation/Learning/opencv/learningOpencv/1.png");
    imshow("src", src);

    //阈值寻找方法首先要转化为灰度图像
    cvtColor(src, src_gray, CV_BGR2GRAY); //这之后就可以进行阈值操作了
    namedWindow("output");
    //                       名字                     窗口                                     最大值             回掉方法
    createTrackbar("threshold_value", "output", &threshold_value, threshold_max, Threshold_Demo);
    createTrackbar("type_value", "output", &type_value, type_max, Threshold_Demo);
    Threshold_Demo(0, 0);

    waitKey(0);
    return 0;
}

void Threshold_Demo(int, void*)
{
    //threshold(src_gray, res, threshold_value, threshold_max, type_value);
    threshold(src_gray, res, 0, 255,THRESH_TRIANGLE | type_value); //自动帮我们算阈值,忽略我们输入的阈值
    imshow("output", res);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值