利用回调函数实现
代码如下:
#include<opencv2/imgproc/imgproc.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<iostream>
using namespace std;
using namespace cv;
//拖动条回调函数
void onChangeTrackBar(int pos, void *data)
{
//强制类型转换
Mat srcImage = *(cv::Mat*)(data);
Mat dstImage;
//根据拖动条的值对传入图像进行二值化
threshold(srcImage, dstImage, pos, 255, 0);
imshow("threshold", dstImage);
}
int main()
{
//读取图像
Mat srcImage = imread("F:\\opencv_re_learn\\2.jpg");
if (!srcImage.data){
cout << "read failed" << endl;
system("pause");
return -1;
}
//原图像转换灰度图
Mat srcGray;
cvtColor(srcImage, srcGray, CV_RGB2GRAY);
namedWindow("threshold");//创建窗口
imshow("threshold", srcGray);
//创建滑动条createTrackbar
createTrackbar("pos", "threshold",
0, 255, onChangeTrackBar, &srcGray);
waitKey(0);
return 0;
}
效果图: