opencv学习-滑动条应用
Posted 殇堼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv学习-滑动条应用相关的知识,希望对你有一定的参考价值。
滑动条英文翻译就是trackbar。
在opencv中,提供了trackbar功能。
比如通过trackbar实现动态调整卷积核的大小,就不必要先修改代码,然后再编译,直接滑动条即可。
或是应用于形态学中,形态学中有多种变化操作。
应用1-用于形态学类型变化
1.1形态学操作和数字之间的对应关系:
enum MorphTypes{
MORPH_ERODE = 0, //腐蚀
MORPH_DILATE = 1, //膨胀
MORPH_OPEN = 2, //开操作
MORPH_CLOSE = 3, //闭操作
MORPH_GRADIENT = 4, //梯度操作
MORPH_TOPHAT = 5, //顶帽操作
MORPH_BLACKHAT = 6, //黑帽操作
};
1.2代码演示
#include<opencv2\\opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
//注意这一块定义要放在开头,不能放在函数当中。
Mat src, dst;
//为了方便表达,命名两个字符串:将inputImage赋值于变量inimg;将outputImage赋值于变量outimg;
char inimg[] = "inputImage";
char outimg[] = "outputImage";
//定义changeTrackbar函数
void changeTrackbar(int pos, void*usrdata) {
Mat kernel = getStructuringElement(MORPH_RECT, Size(5, 5), Point(-1, -1));//创建卷积核,并且固定的
morphologyEx(src, dst, pos, kernel); //参数pose代表形态学中的多种操作,
imshow(outimg, dst);//随着滑动,形态学操作类型也相对变动,之后显示操作后的图像
}
int main()
{
src = imread("D:/images/lena.png");
if (src.empty())
{
cout << "could not load image !";
return -1;
}
//为两个变量创建窗口并显示输入图像。
namedWindow(inimg, WINDOW_AUTOSIZE);
namedWindow(outimg, WINDOW_AUTOSIZE);
imshow(inimg, src);
//定义参数和创建滑动条
int initValue = 2;
int maxSize = 6;//设置滑动条上最大拖动值为6,加上0,刚好是对应形态学中的7种操作
createTrackbar("kernel", outimg, &initValue, maxSize, changeTrackbar);//回调自定义的changeTrackbar函数
waitKey(0);
return 0;
}
1.3结果
2.滑动条用于卷积核
2.2代码演示
#include<opencv2\\opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
Mat src, dst;
char inimg[] = "【inputImage】";
char outimg[] = "【outputImage】";
void changeTrackbar(int pos, void*usrdata) {
Mat kernel = getStructuringElement(MORPH_RECT, Size(2 * pos + 1, 2 * pos + 1), Point(-1, -1));
morphologyEx(src, dst, 0, kernel);
imshow(outimg, dst);
}
int main()
{
src = imread("D:/images/lena.png");
if (src.empty())
{
cout << "could not load image !";
return -1;
}
namedWindow(inimg, WINDOW_AUTOSIZE);
namedWindow(outimg, WINDOW_AUTOSIZE);
imshow(inimg, src);
int initValue = 2;
int maxSize = 10;
createTrackbar("kernel", outimg, &initValue, maxSize, changeTrackbar);
waitKey(0);
return 0;
}
2.3结果
以上是关于opencv学习-滑动条应用的主要内容,如果未能解决你的问题,请参考以下文章