Opencv 学习笔记(七)形态学操作

菜鸟一枚,
这是我的第六个博客,
刚刚入门opencv,
想将自己的学习过程分享给大家!!!
代码:

#include "stdafx.h"
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>    //Opencv highgui 模块
#include <opencv2/imgproc/imgproc.hpp>    //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);
}

程序运行结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

谢谢大家的阅读!!!

发布了28 篇原创文章 · 获赞 15 · 访问量 1066

猜你喜欢

转载自blog.csdn.net/qq_43765237/article/details/105308705