1.阈值概念
阈值即界限,在图像学中,它把图像进行分割,凸显出想要的区域。常用于图像二值化。
2.常见操作
(1)阈值二值化-threshold binary
(2)阈值反二值化-threshold binary Inverted
(3)截断-truncate
(4)阈值取0-threshold to zero
(5)阈值反取0-threshold to zero Inverted
3.阈值API介绍
double cv::threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type)
参数1:输入图像
参数2:输出图像
参数3:定义阈值
参数4:代替的最大值
参数5:操作类型(是int类型,对应的数字和类型如下)
参数5有如下选择:
4.代码实现
#include "stdafx.h"
#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace std;
using namespace cv;
char inputName[] = "input name";
char outputName[] = "output name";
int thresholdValue = 127;
int thresholdMax = 255;
int typeValue = 2;
int typeMax=6;
void ThresholdDemo(int, void*);
Mat src, dst,graySrc;
int main()
{
src = imread("D:/demo.jpg");
if (src.empty())
{
cout << "找不到图像!" << endl;
return -1;
}
namedWindow(inputName, CV_WINDOW_AUTOSIZE);
namedWindow(outputName, CV_WINDOW_AUTOSIZE);
imshow(inputName, src);
createTrackbar("Threshold value", outputName, &thresholdValue, thresholdMax, ThresholdDemo);//控制阈值大小
createTrackbar("Type value", outputName, &typeValue, typeMax, ThresholdDemo);//控制阈值类型(1到4不同)
ThresholdDemo(0, 0);
waitKey(0);
return 0;
}
void ThresholdDemo(int, void*)
{
cvtColor(src, graySrc, COLOR_BGR2GRAY);
threshold(graySrc, dst, thresholdValue, thresholdMax, typeValue);//使用threshold API
imshow(outputName, dst);
}
使用了2个Trackbar,一个控制阈值大小,一个控制阈值操作类型。