演示代码:
#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("e:/9.png"); 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); 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); imshow(output_title, dst); }
(5种阈值类型的测试)
代码解释:
阈值类型一阈值二值化(threshold binary)
左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值
阈值类型一阈值反二值化(threshold binary Inverted)
左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值
阈值类型一截断 (truncate)
左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值
阈值类型一阈值取零 (threshold to zero)
左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值
阈值类型一阈值反取零 (threshold to zero inverted)
左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文章代码及资料部分或全部来自贾志刚老师的视频,勇哥只是在个人理解的基础上做学习笔记,转载请附上博文链接!

