Opencv2.4::创建滑动条Trackbar,实现可变二值化

利用回调函数实现

代码如下:

#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;
}

效果图:

 

猜你喜欢

转载自blog.csdn.net/dieju8330/article/details/82388435