#include <stdio.h>
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
Mat src, srcGray, dst;
char * windowName = "Threshold Demo"; // 窗口标题
char * trackbarType = "Type"; // 选取阈值方法的滑动条标题
char * trackbarValue = "Value"; // 选取阈值大小的滑动条标题
int const maxValue = 255; // 最大阈值
int const maxType = 3; // 阈值方法的总数
int threadhold = 0; // 当前阈值大小
int threadholdType = 3; // 当前所用阈值方法
void threadOpreation(int, void* ); // 声明阈值操作函数
int main(int argc, char** argv)
{
// 读取图像,并判断是否读取成功
char* filename = "lena.jpg";
src = imread(filename, 1);
if (!src.data)
{
cout << " read image error" << endl;
return -1;
}
// 变为灰度图像
cvtColor(src, srcGray, CV_RGB2GRAY);
// 创建一个窗口显示图片
namedWindow( windowName, CV_WINDOW_AUTOSIZE );
// 创建滑动条
createTrackbar(trackbarType, windowName, &threadholdType, maxType, threadOpreation);
createTrackbar(trackbarValue, windowName, &threadhold, maxValue, threadOpreation);
// 初始化自定义阈值函数
threadOpreation(0, 0);
while(true)
{
int c = 0;
c = waitKey(10);
if (27 == c)
{
break;
}
}
}
void threadOpreation(int, void* )
{
/*
0: 二进制阈值
1: 反二进制阈值
2: 截断阈值
3: 0阈值
*/
threshold(srcGray, dst, threadhold, maxValue,threadholdType);
imshow(windowName, dst);
}
openCV threshold 阈值
最新推荐文章于 2025-01-20 07:45:47 发布