【OpenCV学习笔记】十六、图像阈值化

图像阈值化:

1.固定阈值——threshold()

2.自适应阈值——adaptiveThreshold()

先上PPT:

【OpenCV学习笔记】十六、图像阈值化_第1张图片


【OpenCV学习笔记】十六、图像阈值化_第2张图片


【OpenCV学习笔记】十六、图像阈值化_第3张图片


【OpenCV学习笔记】十六、图像阈值化_第4张图片


【OpenCV学习笔记】十六、图像阈值化_第5张图片


【OpenCV学习笔记】十六、图像阈值化_第6张图片


【OpenCV学习笔记】十六、图像阈值化_第7张图片

代码:

#include "opencv2/opencv.hpp"
using namespace cv;
int main()
{
	//进行阈值化需是单通道图像(灰度图)
	//1.以灰度图的形式读取
	Mat srcImg = imread("1.bmp",CV_LOAD_IMAGE_GRAYSCALE);
	//2.转换为灰度空间
	//Mat srcImg = imread("1.bmp",CV_LOAD_IMAGE_COLOR);
	//cvtColor(srcImg,srcImg,CV_BGR2GRAY);
	Mat dstImg;
	
	///固定阈值——threshold()
	/*threshold(srcImg,dstImg,100,//给定阈值
		255,//max_value
		CV_THRESH_BINARY);//阈值类型.value = value>threshold ? max_value : 0*/
	/*threshold(srcImg, dstImg, 100,//给定阈值
		255,//max_value
		CV_THRESH_BINARY_INV);//阈值类型.value = value>threshold ? 0 : max_value*/

	///自适应阈值——adaptiveThreshold()
	/*adaptiveThreshold(srcImg,dstImg,255,//max_value
		CV_ADAPTIVE_THRESH_MEAN_C,//自适应阈值算法.先求出块中的均值,再减掉C.
		CV_THRESH_BINARY,//阈值类型.只能取CV_THRESH_BINARY或CV_THRESH_BINARY_INV两者之一.
		11,//来计算阈值的邻域大小,需是正奇数
		5//常数值C
		);*/
	adaptiveThreshold(srcImg, dstImg, 255,//max_value
		CV_ADAPTIVE_THRESH_GAUSSIAN_C,//自适应阈值算法.先求出块中的加权和,再减掉C.
		CV_THRESH_BINARY,//阈值类型.只能取CV_THRESH_BINARY或CV_THRESH_BINARY_INV两者之一.
		11,//来计算阈值的邻域大小,需是正奇数
		5//常数值C
		);

	imshow("src", srcImg);
	imshow("dst",dstImg);
	waitKey(0);
	return 0;
}

运行结果:

固定阈值.阈值类型(CV_THRESH_BINARY):

【OpenCV学习笔记】十六、图像阈值化_第8张图片


固定阈值.阈值类型(CV_THRESH_BINARY_INV):

【OpenCV学习笔记】十六、图像阈值化_第9张图片


自适应阈值.自适应阈值算法(CV_ADAPTIVE_THRESH_MEAN_C):

【OpenCV学习笔记】十六、图像阈值化_第10张图片


自适应阈值.自适应阈值算法(CV_ADAPTIVE_THRESH_GAUSSIAN_C):

【OpenCV学习笔记】十六、图像阈值化_第11张图片



你可能感兴趣的:(OpenCV学习笔记)