OpenCV高级图形用户界面(1)创建滑动条函数createTrackbar()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

创建一个滑动条并将其附加到指定的窗口。

该函数 createTrackbar 创建一个具有指定名称和范围的滑动条(滑块或范围控制),将变量 value 分配为与滑动条位置同步的位置,并指定回调函数 onChange 在滑动条位置改变时被调用。创建的滑动条将显示在指定的窗口 winname 中。

cv::createTrackbar() 函数用于在 OpenCV 的窗口中创建一个滑动条(trackbar),可以用来调整一些参数,并实时反映在图像处理的效果中。

注释

仅 Qt 后端\] 如果滑动条应附加到控制面板,则 `winname` 可以为空。 点击每个滑动条的标签可以手动编辑滑动条的值。 ### 函数原型 ```cpp int cv::createTrackbar ( const String & trackbarname, const String & winname, int * value, int count, TrackbarCallback onChange = 0, void * userdata = 0 ) ``` ### 参数 * 参数trackbarname 创建的滑动条的名称。 * 参数winname 将作为创建的滑动条父级的窗口的名称。 * 参数value 指向一个整型变量的可选指针,该变量的值反映了滑块的位置。在创建时,滑块的位置由这个变量定义。 * 参数count 滑块的最大位置。最小位置始终为 0。 * 参数onChange 指向每次滑块位置改变时将被调用的函数的指针。此函数应该原型化为 `void Foo(int, void*);`,其中第一个参数是滑块的位置,第二个参数是用户数据(参见下一个参数)。如果回调是指向 `NULL` 的指针,则不调用回调,但只会更新 `value`。 * 参数userdata 作为参数原样传递给回调的用户数据。它可以用来在不使用全局变量的情况下处理滑块事件。 ### 返回值 返回一个整数值,表示操作的结果或状态。具体含义取决于 OpenCV 实现。 ### 代码示例: ```cpp #include #include // 回调函数 void onTrackbarSlide( int pos, void* userData ) { cv::Mat img = *( cv::Mat* )userData; cv::Mat thresholdImg; cv::threshold( img, thresholdImg, pos, 255, cv::THRESH_BINARY ); cv::imshow( "Threshold Image", thresholdImg ); } int main() { // 加载图像 cv::Mat img = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/hawk.jpg", cv::IMREAD_GRAYSCALE ); if ( img.empty() ) { std::cerr << "Error: Image not found!" << std::endl; return -1; } // 创建窗口 cv::namedWindow( "Threshold Image" ); // 创建滑动条 int thresholdValue = 128; int result = cv::createTrackbar( "Threshold Value", "Threshold Image", &thresholdValue, 255, onTrackbarSlide, &img ); if ( result < 0 ) { std::cerr << "Failed to create trackbar." << std::endl; return -1; } // 初始显示 cv::Mat thresholdImg; cv::threshold( img, thresholdImg, thresholdValue, 255, cv::THRESH_BINARY ); cv::imshow( "Threshold Image", thresholdImg ); // 主循环 while ( true ) { int key = cv::waitKey( 1 ); if ( key == 27 ) { // ESC 键 break; } } // 释放资源 cv::destroyAllWindows(); return 0; } ``` ### 运行结果 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3ed7bfdec6a045d587b6f6350e486ea7.png)

相关推荐
谢的2元王国8 分钟前
这是跑通实用rag的日志记录 重点关注一点 句子向量化模型的选择 以及召回结果后 重排交叉编码的精进
人工智能·深度学习
LeapMay9 分钟前
AdaWorld: Learning Adaptable World Models with Latent Actions(ICML 2025)
人工智能
蝎蟹居17 分钟前
GBT 4706.1-2024逐句解读系列(26) 第7.6条款:正确使用符号标识
人工智能·单片机·嵌入式硬件·物联网·安全
这张生成的图像能检测吗17 分钟前
(论文速读)轴向变压器
人工智能·计算机视觉·注意力机制
GISer_Jing24 分钟前
AI Agent 智能体的“深度思考”与“安全防线”
人工智能·学习·安全·aigc
Coco恺撒1 小时前
【脑机接口+人工智能】阔别三载,温暖归来
人工智能·经验分享·神经网络·人机交互·创业创新·学习方法
冰西瓜6001 小时前
从项目入手机器学习——(三)数据预处理(下)自动编码器
人工智能·机器学习
Blossom.1181 小时前
AI Agent的长期记忆革命:基于向量遗忘曲线的动态压缩系统
运维·人工智能·python·深度学习·自动化·prompt·知识图谱
_codemonster1 小时前
计算机视觉入门到实战系列(十六)基于空间约束的k-means图像分割
人工智能·计算机视觉·kmeans
love530love1 小时前
ComfyUI Hunyuan-3D-2 插件安装问题解决方案
人工智能·windows·python·3d·comfyui·hunyuan-3d-2·pygit2