五种类型阈值二值化
代码:
#include <opencv2/opencv.hpp> #include <iostream> #include <math.h> using namespace cv; Mat src, gray_src, dst; int threshold_value = 127; int threshold_max = 255; int type_value = 2; int type_max = 4; const char* output_title = "binary image"; void Threshold_Demo(int, void*); int main(int argc, char** argv) { src = imread("L:/4.jpg"); if (!src.data) { printf("could not load image...\n"); return -1; } namedWindow("input image", CV_WINDOW_AUTOSIZE); namedWindow(output_title, CV_WINDOW_AUTOSIZE); imshow("input image", src); createTrackbar("Threshold Value:", output_title, &threshold_value, threshold_max, Threshold_Demo); createTrackbar("Type Value:", output_title, &type_value, type_max, Threshold_Demo); //参数:1.滑动空间名称 2.滑动依附的图像窗口名称 3.初始化阈值 4.滑动控件的刻度刻度范围 5.回调函数hreshold_Demo Threshold_Demo(0, 0); waitKey(0); return 0; } void Threshold_Demo(int, void*) { cvtColor(src, gray_src, CV_BGR2GRAY); threshold(gray_src, dst, threshold_value, threshold_max, type_value); //五种方法通过type_value选择显示 //threshold(gray_src, dst, threshold_value, threshold_max, THRESH_BINARY); THRESH_中的第一种方法 imshow(output_title, dst); }
原图:
结果: