openCV:滑动条之setTrackbarPos与createTrackbar
来源:互联网 发布:图片源码是什么 编辑:程序博客网 时间:2024/05/21 19:40
滑动条(trackbar)
创建滑动条(createTrackbar)
openCV提供createTrackbar指定图像窗口创建一个指定名称和范围的滑动条,使用户能够滑动调整输入,然后根据输入值执行程序。还提供了getTrackbarPos和setTrackbarPos以获取和修改bar的当前值。
// C++ codeint createTrackbar(const string& trackbarname, const string& winname, int* value, int count, TrackbarCallback onChange=0, void*userdata=0)
Parameters:
- trackbarname:创建的滑动条名。
- winname:滑动条的父窗体名。
- value:滑动条当前值。
- count:允许的最大值,最小值为0。
- onChange:回调函数,当滑动条位置发生变化时,调用此函数。函数形如void Foo(int,void*);,第一个是位置值,第二个是userdata
- userdata:可以被传递给回调函数,可以在没有全局位置变量时起作用。
获取当前值(getTrackbarPos)
int getTrackbarPos(const String& trackbarname, const String& winname)
Parameters:
- trackbarname:滑动条名称。
- winname:窗口名称
设置滑动条位置(setTrackbarPos)
void setTrackbarPos(const String& trackbarname, const String& winname, int pos)
Parameters:
- trackbarname:滑动条名称。
- winname:窗口名称。
- pos:新位置。
测试代码
代码功能描述:
- 通过调整滑动条的位置可以调整视频的帧位;
- ”r“键播放视频;
- ”s“键每按一次切换一帧;
//code from "Learning OpenCV 3"#include<opencv2\highgui.hpp>#include<opencv2\imgproc.hpp>#include<iostream>#include<fstream>using namespace std;int g_slider_position = 0;int g_run = 1, g_dontset = 0;cv::VideoCapture g_cap;void onTrackbarSlide(int pos, void *) { g_cap.set(cv::CAP_PROP_POS_FRAMES, pos); if (!g_dontset) g_run = 1; g_dontset = 0;}int main() { string winName = "Example2-4"; string trackName = "Position"; cv::namedWindow(winName, cv::WINDOW_AUTOSIZE); g_cap.open(string("C:\\Users\\LIKE\\Videos\\Bad Apple.mp4")); int frames = (int)g_cap.get(cv::CAP_PROP_FRAME_COUNT); int tmpw = (int)g_cap.get(cv::CAP_PROP_FRAME_WIDTH); int tmph = (int)g_cap.get(cv::CAP_PROP_FRAME_HEIGHT); cout << "Video has " << frames << " frames of dimensions(" << tmpw << "," << tmph << ")." << endl; cv::createTrackbar(trackName, winName, &g_slider_position, frames, onTrackbarSlide); cv::Mat frame; for (;;) { if (g_run != 0) { g_cap >> frame; if (frame.empty()) break; int current_pos = (int)g_cap.get(cv::CAP_PROP_POS_FRAMES); g_dontset = 1; cv::setTrackbarPos(trackName, winName, current_pos); current_pos = cv::getTrackbarPos(trackName, winName); cout << current_pos << endl; cv::imshow(winName, frame); g_run -= 1; } char c = (char)cv::waitKey(10); if (c == 's') { g_run = 1; cout << "Single Step, run = " << g_run << endl; } if (c == 'r') { g_run = -1; cout << "Run_mode, run = " << g_run << endl; } if (c == 27) break; } return(0);}
阅读全文
1 0
- openCV:滑动条之setTrackbarPos与createTrackbar
- opencv创建createTrackbar滑动条
- OpenCV创建滑动条函数:createTrackbar()介绍
- 【拜小白opencv】9-滑动条(滚动条)创建与实现;createTrackbar()函数
- OpenCv学习笔记(八)---细说HighGUI(图像用户界面)之滑动条createTrackbar()详解
- 创建滑动条createTrackbar()
- 【OpenCV笔记 02】OpenCV滑动条的创建和使用——createTrackbar()函数
- OpenCV之滑动条
- opencv之highgui中createTrackbar
- opencv--鼠标与滑动条
- opencv之滑动条详解
- 利用OpenCV的函数createTrackbar创建滑动条查看二值化的最佳阈值的源码及讲解
- OpenCV createTrackbar()
- Opencv- createTrackbar()
- 为程序界面添加滑动条--createTrackbar()
- opencv-createTrackbar函数创建轨迹条的应用
- <opencv>滑动条的创建与使用
- opencv(6)---鼠标与滑动条操作
- [UE4]构建时候Swarm报错或无法启动的解决方法
- [UE4]Steam联机设置
- 如何带领项目团队按时高质量的完成交付
- lua弱表引用
- [UE4]接入steam sdk的plugin,可以获取到用户id和name,steam userid playerid
- openCV:滑动条之setTrackbarPos与createTrackbar
- LintCode习题系列之解码方法
- Android程序员问答题
- 蓝桥杯 算法训练 字符串的展开
- 远程Linux上部署Redis
- python练习模仿购物车功能
- Javascript 异步加载详解
- 自顶向下、逐步求精
- 深度学习tensorflow-gpu环境搭建避坑指南-win10_anaconda_python3.5_cuda8.0