OpenCv3(滤波篇)----adaptiveThreshold自适应阈值化

相对于一般得阈值化操作,当图像中出现较大得明暗差异时,自适应阈值化非常有效。

效果:
在这里插入图片描述
函数原型:

CV_EXPORTS_W void adaptiveThreshold( InputArray src, 
									 OutputArray dst,
                                     double maxValue, 
                                     int adaptiveMethod,
                                     int thresholdType, 
                                     int blockSize, 
                                     double C );

src:8位单通道图像
dst:目标图像的大小和类型与src相同
maxValue:赋给满足条件的像素的非零值
adaptiveMethod:自适应阈值滤波算法选择cv::ADAPTIVE_THRESH_GAUSSIAN_C或者cv::ADAPTIVE_THRESH_MEAN_C
thresholdType:阈值设定类型cv::THRESH_BINARY或者cv::THRESH_BINARY_INV
blockSize:用于计算阈值的像素邻域的大小 如:3,5,7等等。
C:通常情况下,它是正数,但也可能是零或负数

代码:

void example()
{
    cv::Mat input = cv::imread("d:\\desktop\\picture\\test.jpg"), output, str1;
    cv::namedWindow("example");
    int maxval = 0, adaptiveMethod = 0, thresholdType = 0 , blockSize = 1, C = -100, blockSize_test = 1, c_test = 100;
    cv::createTrackbar("maxval", "example", &maxval, 255);
    cv::createTrackbar("adaptiveMethod", "example", &adaptiveMethod, 1);
    cv::createTrackbar("thresholdType", "example", &thresholdType, 1);
    cv::createTrackbar("blockSize", "example", &blockSize_test, 255);
    cv::createTrackbar("C", "example", &c_test, 200);
    cv::cvtColor(input, str1, CV_BGR2GRAY);
    for(;;)
    {
        blockSize = blockSize_test;
        if(blockSize_test < 1) //使blockSize_test大于1
            blockSize = 1;
        C = c_test - 100; //小于100为负数  ,因cv::createTrackbar不能设置最小值
        cv::adaptiveThreshold(str1, output, maxval, adaptiveMethod, thresholdType, blockSize*2+1, C);
        cv::imshow("example", output);
        if(cv::waitKey(100) == 27)
            break;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值