/* prepared by txwtech 阈值操作只能是灰度图像 图像阈值 阈值类型 阈值 是什么?简单点说是把图像分割的标尺,这个标尺是根据什么产生的,阈值产生算法?阈值类型。(Binary segmentation)
阈值类型一阈值二值化(threshold binary) 阈值类型一阈值反二值化(threshold binary Inverted) 阈值类型一截断 (truncate) 阈值类型一阈值取零 (threshold to zero)
THRESH_TRIANGLE三角码取阈值是根据直方图计算的 */
/*
prepared by txwtech
阈值操作只能是灰度图像
图像阈值
阈值类型
阈值 是什么?简单点说是把图像分割的标尺,这个标尺是根据什么产生的,阈值产生算法?阈值类型。(Binary segmentation)
阈值类型一阈值二值化(threshold binary)
阈值类型一阈值反二值化(threshold binary Inverted)
阈值类型一截断 (truncate)
阈值类型一阈值取零 (threshold to zero)
THRESH_TRIANGLE三角码取阈值是根据直方图计算的
*/
#include
#include
using namespace cv;
using namespace std;
int threshold_min = 126;
int threshold_max = 255;
const char* out_title = "binary_img";
void Threshold_fun(int,void*);
Mat src_gray;
Mat src;
Mat dst1;
int type_min = 2;
int type_max = 4;
int main(int argc, char *argv[])
{
src = imread("E:\\pictures\\dog1.jpg");
if (!src.data)
{
printf("failed to load image");
return -1;
}
namedWindow("原图",CV_WINDOW_AUTOSIZE);
namedWindow(out_title,CV_WINDOW_AUTOSIZE);
imshow("原图",src);
createTrackbar("threshold_value:", out_title,&threshold_min,threshold_max,Threshold_fun);
createTrackbar("type_value:", out_title, &type_min, type_max, Threshold_fun);
Threshold_fun(0,0);
waitKey(0);
return 0;
}
void Threshold_fun(int,void*)
{
cvtColor(src,src_gray,CV_BGR2GRAY);
//阈值
//threshold(src_gray,dst1,threshold_min,threshold_max,THRESH_BINARY);
//自动计算阈值THRESH_OTSU,一个滑动条就不起作用了
//threshold(src_gray, dst1, 0, 255, THRESH_OTSU|type_min);
//自动计算阈值THRESH_TRIANGLE三角码取阈值是根据直方图计算的
threshold(src_gray, dst1, 0, 255, THRESH_TRIANGLE | type_min);
imshow(out_title,dst1);
}