opencv学习笔记12-opencv移动滑动条调节二值化阈值

一、函数原型:

CV_EXPORTS int createTrackbar(const String& trackbarname, const String& winname, 
int* value, int count, TrackbarCallback onChange = 0, void* userdata = 0);

二、函数功能:

  • createTrackbar 函数用于创建一个滑动条(也称为范围控件或滑块),它可以在指定的窗口中显示,并与一个整数值同步位置。

三、滑动条的显示

  • 滑动条将显示在指定名称的窗口 winname 中。如果使用Qt后端,且滑动条应该附加到控制面板,winname 可以为空。

四、参数

  • trackbarname:创建的滑动条的名称。
  • winname:用作滑动条父窗口的窗口名称。
  • value:指向整型变量的可选指针,该变量的值反映了滑动条的位置。在创建时,滑动条的位置由这个变量定义。
  • count:滑动条的最大位置。最小位置始终是0。
  • onChange:每次滑动条改变位置时将被调用的回调函数的指针。如果回调函数是NULL指针,则不调用回调,只更新 value
  • userdata:作为参数传递给回调的用户数据。它可以用来处理滑动条事件,而无需使用全局变量。

五、回调函数

onChange 参数指向的回调函数应该具有以下原型:void Foo(int,void*);,其中第一个参数是滑动条的位置,第二个参数是用户数据。

六、Qt后端特定:

  • 在Qt后端中,如果滑动条应该附加到控制面板而不是特定窗口,winname 可以是空字符串。

七、手动编辑

  • 点击每个滑动条的标签可以手动编辑滑动条的值。

八、返回值:

  • 函数返回创建的滑动条的ID,这个ID可以用于在其他操作中引用滑动条。

 九、示例代码:

#include <opencv2/core/utils/logger.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/objdetect.hpp>
#include <opencv2/highgui/highgui_c.h>
#include <iostream>
using namespace cv;
using namespace std;

//回调函数
void callback(int th, void* data)
{
	//强制类型转换
	Mat src = *((Mat*)data);

	//定义输出图片容器
	Mat dst;

	//二值化函数
	threshold(src, dst, th, 255, CV_THRESH_BINARY);// value = value > threshold ? max_value : 0 
	imshow("image", dst);
}
//主函数
int main()
{
	utils::logging::setLogLevel(utils::logging::LOG_LEVEL_SILENT);// 设置日志级别为不输出任何日志信息(通过隐藏日志的方式,不打印此信息)
	//定义图像容器
	Mat srcMat;
	Mat gryMat;


	//初始化滑动条的值,并设置滑动节的调节范围
	int lowth = 100;
	int maxth = 255;

	//读取图片
	srcMat = imread("C:\\Users\\86173\\Desktop\\TI\\Q版阿离.png");

	//判断图片读取是否成功
	if (srcMat.empty())
	{
		cout << "fail to read!" << endl;//读取失败
	}

	//转化为灰度图
	cvtColor(srcMat, gryMat, CV_BGR2GRAY);//(原图像,输出图像)

	//显示灰度图
	namedWindow("image");
	imshow("image", gryMat);

	//创建滑动条函数
	createTrackbar("slider", "image", &lowth, maxth, callback, &gryMat);
	waitKey(0);
	destroyAllWindows();
	return 0;

}

十、运行结果:

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值