OpenCV学习十四:threshold、adaptiveThreshold 阀值

threshold(  
    cv::InputArray src, // 输入图像  
    cv::OutputArray dst, // 输出图像  
    double thresh, // 阈值  
    double maxValue, // 向上最大值  
    int thresholdType // 阈值化操作的类型   

);  

几种操作类型,前五个对应下面原理图:

THRESH_BINARY 普通二值化

THRESH_BINARY_INV 普通二值化——取反

THRESH_TRUNC 截取峰值二值化

THRESH_TOZERO 取零二值化

THRESH_TOZERO_INV 取零二值化——取反

THRESH_OTSU 使用Otsu原理确定最优阀值大小

THRESH_TRIANGLE 使用三角函数原理确定最优阀值大小

原理图

#include <opencv2/opencv.hpp>  
#include <stdio.h>  
#include <stdlib.h>  

using namespace cv;  
using namespace std;  

char file[] = "1.jpg";
int main(int argc, char** argv)  
{  
	Mat img = imread(file, -1);
	pyrDown(img, img, Size(img.cols/2, img.rows/2));
	cvtColor(img, img, CV_BGR2GRAY);
	imshow("1",img);

	Mat out;
	threshold(img, out, 127, 255, THRESH_BINARY);
	imshow("2",out);imwrite("2.jpg", out);

	threshold(img, out, 0, 255, THRESH_OTSU | THRESH_BINARY_INV);//使用Otsu方法确定最优阀值,但是选取的阀值方法需要这样填写
	imshow("3",out);imwrite("3.jpg", out);

	waitKey();
	return 1;
}  

2.jpg

 

3.jpg

adaptiveThreshold(

InputArray src, //源图像

OutputArray dst, //输出图像,与源图像大小一致

double maxValue, //最大值

int adaptiveMethod, //在一个邻域内计算阈值所采用的算法。

ADAPTIVE_THRESH_MEAN_C的计算方法是计算出领域的平均值再减去第七个参数double C的值

ADAPTIVE_THRESH_GAUSSIAN_C的计算方法是计算出领域的高斯均值再减去第七个参数double C的值

int thresholdType, //这是阈值类型,只有两个取值,分别为 THRESH_BINARY 和THRESH_BINARY_INV

int blockSize, //adaptiveThreshold的计算单位是像素的邻域块,邻域块取多大,就由这个值作决定

double C//这个参数实际上是一个偏移值调整量

);
#include <opencv2/opencv.hpp>  
#include <stdio.h>  
#include <stdlib.h>  

using namespace cv;  
using namespace std;  

char file[] = "1.jpg";
int main(int argc, char** argv)  
{  
	Mat img = imread(file, -1);
	pyrDown(img, img, Size(img.cols/2, img.rows/2));
	cvtColor(img, img, CV_BGR2GRAY);
	imshow("1",img);

	Mat out;
	adaptiveThreshold(img, out, 255, ADAPTIVE_THRESH_GAUSSIAN_C, THRESH_BINARY, 9, 0);
	imshow("4",out);imwrite("4.jpg", out);

	waitKey();
	return 1;
}  

 

4.jpg

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值