OpenCV的滑块与回调函数
生活随笔
收集整理的這篇文章主要介紹了
OpenCV的滑块与回调函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、滑塊
opencv的滑塊使用的API是createTrackbar,API原型如下:
CV_EXPORTS int createTrackbar(const string& trackbarname, const string& winname,int* value, int count,TrackbarCallback onChange = 0,void* userdata = 0);trackbarname:滑動名稱;
winname:滑動依附的圖像窗口的名稱;
value:初始化閾值;
count:滑動控件的刻度范圍,也就是最大值;
TrackbarCallback:是回調函數,每當滑塊有變化,則調用一次這個函數;
二、回調函數
1.回調函數是通過函數指針調用的函數,這里的使用方式是把函數地址傳給滑塊,當滑塊滑動一個值,則調用一次該函數。
2.函數的格式 void XXX(int,void*) .
三、代碼示例
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std;Mat src, dst; int x_min = 3; int x_max = 255; int y_min = 3; int y_max = 255;//回調函數 void callBack(int, void*);int main() {//讀圖像src = imread("4.jpg");if (src.empty()){cout << "could not load the image!" << endl;return -1;}namedWindow("原圖:", 0);imshow("原圖:", src);namedWindow("膨脹:", 0);//X滑動控件createTrackbar("X方向:", "膨脹:", &x_min, y_max, callBack);//X滑動控件createTrackbar("Y方向:", "膨脹:", &y_min, y_max, callBack);callBack(x_min, 0);callBack(y_min, 0);waitKey(0);return 0; }void callBack(int, void*) {if (x_min > 0 && y_min > 0){Mat structureElement = getStructuringElement(MORPH_RECT, Size(x_min, y_min), Point(-1, -1));dilate(src, dst, structureElement, Point(-1, -1), 1);imshow("膨脹:", dst);} }總結
以上是生活随笔為你收集整理的OpenCV的滑块与回调函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 常用命令与设置
- 下一篇: OpenCV不规则ROI提取