网站开发项目报价,网站开发注意的事项,wordpress数据库分离,临沂做百度网站软件公司文章目录 创建滑动条 —— createTrackbar 创建滑动条 —— createTrackbar
createTrackbar是OpenCV中的一个函数#xff0c;用于创建一个可调节的滑动条#xff08;Trackbar#xff09;#xff0c;以便在图像处理过程中实时调整参数 int cv::createTrackbar(const String… 文章目录 创建滑动条 —— createTrackbar 创建滑动条 —— createTrackbar
createTrackbar是OpenCV中的一个函数用于创建一个可调节的滑动条Trackbar以便在图像处理过程中实时调整参数 int cv::createTrackbar(const String trackbarname, // 滑动条的名称作为字符串传递const String winname, // 滑动条的窗口名称通常是显示图像的窗口名称int * value, // 指向整数变量的指针该指针指向的值反映滑块的位置创建后滑块位置由此变量定义int count, // 滑动条的最大取值TrackbarCallback onChange 0, // 回调函数每次滑块更改位置时要调用的函数的指针void * userdata 0 // 传递给回调函数的可选参数)
其中回调函数的定义如下void onChange(int value, void* userdata) // void* userdata 参数是可选的{// 滑动条值发生变化时执行的操作}可以看到回调函数是可选参数当默认为0时则只更新value要进行的操作在后面定义 例二值化选择参数阈值作为滑动条 #include opencv2/opencv.hpp
#includeiostream
using namespace std;int main()
{cv::Mat image cv::imread(C:/Users/Opencv/temp/lena.png);if (image.empty()) {cout 打开图片失败 endl;return -1;}cv::namedWindow(img);cv::imshow(img, image);int value 128;cv::createTrackbar(阈值, img, value, 255);while (true){cv::Mat thrseImg;cv::threshold(image, thrseImg, value, 255, cv::THRESH_BINARY);cv::imshow(img, thrseImg); // 注意窗口的名字要和之前的一样//cv::imshow(取不同名字时, thrseImg); char key cv::waitKey(10);if (key 27 || key q){break;}}cv::waitKey(0);cv::destroyAllWindows();return 0;
}注上述代码中如果while循环里imshow展示的窗口名字跟之前不同则会新开这个窗口作为滑动结果窗口如下图所示在原图img中滑动数值原图不会改变改变的是另一个窗口。 使用回调函数来简化上述代码
#include opencv2/opencv.hpp
#includeiostream using namespace std;void callback(int value, void*);
cv::Mat image ,thrseImg; // 定义成全局变量才能同时在回调函数中调用int main()
{image cv::imread(C:/Users/jutze/ljw_C/Opencv/temp/lena.png);if (image.empty()) {cout 打开图片失败 endl;return -1;}cv::namedWindow(img);cv::imshow(img, image);int value 128;cv::createTrackbar(阈值, img, value, 255, callback);cv::waitKey(0);cv::destroyAllWindows();return 0;
}static void callback(int value, void*)
{cv::threshold(image, thrseImg, value, 255, cv::THRESH_BINARY);cv::imshow(img, thrseImg);
}
此外OpenCV还提供了鼠标响应函数setMouseCallback()和键盘响应函数setKeyboardCallback()通过在指定窗口进行鼠标点击或键盘按键来触发回调函数执行相关操作。但感觉实际使用的场景比较少以后遇到再说吧。