/*****************************************************
测试程序 【基本阈值操作】
时间:2016年8月26日
*****************************************************/
/// Global variables
int threshold_value = 0; //阈值变量
int threshold_type = 3; //阈值类型
int const max_value = 255; //像素最大值
int const max_type = 4; //最大类型编号
int const max_BINARY_value = 255; //二值化最大值
Mat src, src_gray, dst;
const char* window_name = "Threshold Demo";
const char* trackbar_type = "Type: \n 0: Binary \n 1: Binary Inverted \n 2: Truncate \n 3: To Zero \n 4: To Zero Inverted";
const char* trackbar_value = "Value";
/// Function headers
void Threshold_Demo( int, void* );
int main(void)
{
/// Load an image
src = imread("YY01.jpg" , 1 );
/// Convert the image to Gray
cvtColor( src, src_gray, COLOR_RGB2GRAY );
/// Create a window to display results
namedWindow( window_name, WINDOW_AUTOSIZE );
/// Create Trackbar to choose type of Threshold
createTrackbar( trackbar_type,
window_name, &threshold_type,
max_type, Threshold_Demo );
createTrackbar( trackbar_value,
window_name, &threshold_value,
max_value, Threshold_Demo );
/// Call the function to initialize
Threshold_Demo( 0, 0 );
/// Wait until user finishes program
for(;;)
{
int c;
c = waitKey( 20 );
if( (char)c == 27 ){ break; }
}
}
//【回调函数】
void Threshold_Demo( int, void* )
{
// 0: Binary //二值化
// 1: Binary Inverted //反向二值化
// 2: Threshold Truncated //超阈值截断
// 3: Threshold to Zero //低于阈值,置0
// 4: Threshold to Zero Inverted //高于阈值,置0
//参数,sec,dst,阈值,最大阈值(二值常用),阈值类型
threshold( src_gray, dst, threshold_value, max_BINARY_value,threshold_type );
imshow( window_name, dst );
}
二值化
反向二值化
超阈值截断
低于阈值,置0
高于阈值,置0