#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
// 图像阈值 threshold
// 1. 二值化 threshold binary
// 大于阈值等于255(白) 小于阈值等于0(黑) (阈值为0时,全白;阈值为255时,原黑)
// 2. 反二值化 threshold binary inverted
// 大于阈值等于0(黑) 小于阈值等于255(白) (阈值为0时,全黑;阈值为255时,全白)
// 3. 截断 truncate
// 大于阈值等于阈值 小于阈值不变 (阈值为0时,全黑;阈值为255时,原图)
// 4. 阈值去零 threshold to zero
// 大于阈值不变 小于阈值等于0(黑) (阈值为0时,原图;阈值为255时,全黑)
// 5. 反取零 threshold to zero inverted
// 大于阈值等于0(黑) 小于阈值不变 (阈值为0时,全黑;阈值为255时,原图)
// THRESH_OTSU THRESH_TRIANGLE 自动找阈值
Mat src1, src2, gray_src, dst;
int threshold_value = 127;
int threshold_max = 255;
int type_value = 0;
int type_max = 4;
void Threshold_Demo(int, void*) {
threshold(gray_src, dst, threshold_value, threshold_max, type_value);
imshow("Threshold Demo", dst);
}
int main() {
src1 = imread("/Users/apple/Desktop/fapiao.jpg", IMREAD_COLOR);
//src2 = imread("/Users/apple/Desktop/test2.jpg", IMREAD_COLOR);
if (src1.empty()) { // if (!src.data())
cout << "could not load image..." << endl;
return -1;
}
//imshow("input", src1);
cvtColor(src1, gray_src, CV_BGR2GRAY);
namedWindow("Threshold Demo", WINDOW_AUTOSIZE);
imshow("Threshold Demo", gray_src);
createTrackbar("Threshold Value: ", "Threshold Demo", &threshold_value, threshold_max, Threshold_Demo);
createTrackbar("Type Value: ", "Threshold Demo", &type_value, type_max, Threshold_Demo);
Threshold_Demo(0 , 0);
waitKey(0);
return 0;
}