IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Opencv 笔记1 膨胀、腐蚀、morphologyEx、开、闭操作 -> 正文阅读

[人工智能]Opencv 笔记1 膨胀、腐蚀、morphologyEx、开、闭操作

一,膨胀 腐蚀

首先,膨胀和腐蚀都是形态学的基础操作,而且针对的都是图像中高亮的区域。膨胀是对图中高亮的区域进行的“扩展”,反之,腐蚀是对图像中高亮区域进行的“紧缩”。

算子如下:

膨胀:

Mat element = getStructuringElement(MORPH_RECT, Size(size, size), Point(-1, -1));
// 上面的size 是一个膨胀或者腐蚀效果的很重要的因素
void dilate(
const Mat& src, // 输入的图像
 Mat& dst,  // 输出的结果图像
const Mat& element, // 从声明得到的element
 Point anchor=Point(-1, -1), // Point(-1, -1)表示中心位置
 int iterations=1, 
int borderType=BORDER_CONSTANT, 
const Scalar& borderValue=morphologyDefaultBorderValue())?

腐蚀:

void erode(const Mat& src,
 Mat& dst,
 const Mat& element, 
Point anchor=Point(-1, -1),
 int iterations=1, 
int borderType=BORDER_CONSTANT,
 const Scalar& borderValue=morphologyDefaultBorderValue())

代码如下:

Mat src, des;
const  char* win_out1 = "腐蚀";
const  char* win_out2 = "膨胀";
char  outline[] = "demo";
int  Element_size = 2;
int  Max_size = 21;
int  Min_size = 0;
void  Callback_erode(int, void*);
void  Callback_dilate(int, void*);
void  Callback_erode(int, void*)
{
	int size = Element_size * 2 + 1;// 奇数
	Mat element = getStructuringElement(MORPH_CROSS, Size(size, size), Point(-1, -1));
	erode(src, des, element, Point(-1, -1), 1);
	imshow(win_out1, des);
	return;

}

void  Callback_dilate(int, void*)
{
	int size = Element_size * 2 + 1; // 奇数
	Mat element = getStructuringElement(MORPH_RECT, Size(size, size), Point(-1, -1));
	dilate(src, des, element,Point(-1,-1),1);
	imshow(win_out2, des);
	return;
}

int main(int args, char* arg)
{
	// point  
	src = imread("C:\\Users\\19473\\Desktop\\opencv_images\\301.png");
	if (!src.data)
	{
		printf("could not  load  image....\n");
	}

	namedWindow(win_out1, CV_WINDOW_AUTOSIZE);
	namedWindow(win_out2, CV_WINDOW_AUTOSIZE);

	imshow("input_demo", src);


	createTrackbar("size:", win_out1, &Element_size, Max_size, Callback_erode);
	Callback_erode(0, 0);

	createTrackbar("size:", win_out2, &Element_size, Max_size, Callback_dilate);
	Callback_dilate(0, 0);


	waitKey(0);
	return -1;
}

图像如下:

二,开、闭、顶帽操作

Mat element = getStructuringElement(MORPH_RECT, Size(size, size), Point(-1, -1));

void morphologyEx(
const Mat& src,  
Mat& dst, 
int op, 
		MORPH_OPEN // 开操作,先腐蚀在膨胀,去除图像中的小的亮点
		MORPH_CLOSE  // 闭操作,先膨胀后腐蚀,去除图像中的暗点
		MORPH_GRADIENT // 梯度,原图像膨胀-原图像腐蚀
		MORPH_TOPHAT // 顶帽操作,原图与开运算之后的图像的差,保留小的亮点,去除大的亮点
		MORPH_BLACKHAT // 黑帽操作,原图像的闭操作与原图的差,可以分离比邻近的点暗一些的斑块
 const Mat& element,
 Point anchor=Point(-1, -1), 
 int iterations=1,
 int borderType=BORDER_CONSTANT, 
 const Scalar& borderValue=morphologyDefaultBorderValue()
 )

图像显示:

代码展示:

int main(int args, char* arg)
{
	Mat src, des, des2, des3, des4, des5;

	// point  
	src = imread("C:\\Users\\19473\\Desktop\\opencv_images\\301.png");
	if (!src.data)
	{
		printf("could not  load  image....\n");
	}

	imshow("原图", src);


	Mat Element = getStructuringElement(MORPH_RECT, Size(23, 23), Point(-1, -1));

	 morphologyEx(src, des,CV_MOP_OPEN, Element); // 开闭运算的算子
	 imshow("开", des);

	 morphologyEx(src, des2, CV_MOP_CLOSE, Element); // 开闭运算的算子
	 imshow("闭", des2);

	 morphologyEx(src, des3, CV_MOP_GRADIENT, Element); 
	 imshow("梯度", des3);

	 morphologyEx(src, des4, CV_MOP_TOPHAT, Element);
	 imshow("顶帽", des4);

	 morphologyEx(src, des5, CV_MOP_BLACKHAT, Element); 
	 imshow("黑帽", des5);

	waitKey(0);
	return 0;
}

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-02 16:45:14  更:2021-12-02 16:47:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 2:28:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码