菜鸟一枚,
这是我的第六个博客,
刚刚入门opencv,
想将自己的学习过程分享给大家!!!
代码:
#include "stdafx.h"
#include
#include //Opencv highgui 模块
#include //Opencv 图像处理头文件
using namespace cv;
#define WINDOW_NAME1 "原始图窗口"
#define WINDOW_NAME2 "效果图窗口"
static void on_method(int, void*);
int Nummethod;
int MaxNummethod = 6;
Mat element1 = getStructuringElement(MORPH_RECT, Size(15, 15));
Mat element2 = getStructuringElement(MORPH_RECT, Size(5, 5));
Mat src;
Mat fat;
Mat fat1;
Mat lng;
Mat imHSV;
Mat filter;
int main()
{
src = imread("D:/opencv/opencvSRC/风景.jpg");
//获取自定义内核
if (src.empty())
{
printf("could not input image...");
return -1;
}
namedWindow(WINDOW_NAME1, 1);
pyrDown(src, src, Size(src.cols / 2, src.rows / 2));
imshow("原始图", src);
//BGR转HSV
cvtColor(src, imHSV, COLOR_BGR2HSV);
//inRang颜色过滤
inRange(imHSV, Scalar(35, 42, 45), Scalar(77, 255, 255), filter);
//imshow("颜色过滤", filter);
on_method(0, 0);
createTrackbar("方法", WINDOW_NAME1, &Nummethod, MaxNummethod, on_method); //创建滑动条
waitKey(0);
return 0;
}
static void on_method(int, void*)
{
int offset = MaxNummethod - Nummethod;
if (offset == 6) //方法1
{
morphologyEx(filter, fat1, MORPH_OPEN, element2); //开运算
}
if (offset == 5) //方法2
{
morphologyEx(filter, fat1, MORPH_CLOSE, element2); //闭运算
}
if (offset == 4) //方法3
{
morphologyEx(filter, fat1, MORPH_GRADIENT, element2); //形态学梯度
}
if (offset == 3) //方法4
{
morphologyEx(filter, fat1, MORPH_TOPHAT, element2); //顶帽
}
if (offset == 2) //方法5
{
morphologyEx(filter, fat1, MORPH_BLACKHAT, element2); //黑帽
}
if (offset == 1) //方法6
{
morphologyEx(filter, fat1, MORPH_ERODE, element2); //腐蚀
}
if (offset == 0) //方法7
{
morphologyEx(filter, fat1, MORPH_DILATE, element2); //膨胀
}
imshow(WINDOW_NAME1, fat1);
}
谢谢大家的阅读!!!