一、图像阈值化简介

二、固定阈值



三、自适应阈值


【示例】
1 1 //图像的阈值化 2 2 #include<opencv2/opencv.hpp> 3 3 using namespace cv; 4 4 5 5 int main(){ 6 6 Mat src=imread("1.jpg",0);//以灰度模式读入 7 7 Mat dst; 8 8 //threshold(src,dst,100,255,CV_THRESH_BINARY); 9 9 //adaptiveThreshold(src,dst,255,CV_ADAPTIVE_THRESH_MEAN_C,CV_THRESH_BINARY,11,5); 1010 adaptiveThreshold(src,dst,255,CV_ADAPTIVE_THRESH_GAUSSIAN_C,CV_THRESH_BINARY,11,5); 1111 imshow("src",src); 1212 imshow("dst",dst); 1313 waitKey(0); 1414 return 0; 1515 }
四、滚动条调整参数
【示例】
1 1 //添加滚动条调整参数 2 2 #include<opencv2/opencv.hpp> 3 3 using namespace cv; 4 4 5 5 Mat src,dst,dst2; 6 6 int thres_value=21,block_size=5,c=5; 7 7 8 8 void onThreshold(int ,void*){ 9 9 threshold(src,dst,thres_value,255,CV_THRESH_BINARY); 1010 imshow("固定阈值",dst); 1111 } 1212 void onAdaptiveThreshold(int ,void *){ 1313 if(block_size%2==0) block_size++;//如果block_size是偶数 1414 adaptiveThreshold(src,dst2,255,CV_ADAPTIVE_THRESH_GAUSSIAN_C,CV_THRESH_BINARY,block_size,c); 1515 imshow("自适应阈值",dst2); 1616 } 1717 1818 int main(){ 1919 src=imread("1.jpg",0);//以灰度模式读入 2020 namedWindow("固定阈值",CV_WINDOW_AUTOSIZE); 2121 namedWindow("自适应阈值",CV_WINDOW_AUTOSIZE); 2222 createTrackbar("Threshold", "固定阈值",&thres_value,255,onThreshold,0); 2323 createTrackbar("Block_size", "自适应阈值",&block_size,255,onAdaptiveThreshold,0); 2424 createTrackbar("C", "自适应阈值",&c,255,onAdaptiveThreshold,0); 2525 2626 onThreshold(thres_value,0); //回调函数初始化 2727 onAdaptiveThreshold(block_size,0); 2828 onAdaptiveThreshold(c,0); 2929 3030 imshow("src",src); 3131 waitKey(0); 3232 return 0; 3333 }
