二值形态学(膨胀,腐蚀,开启,关闭)的opencv实现
来源:互联网 发布:开票软件v2.0 编辑:程序博客网 时间:2024/06/03 07:48
一、opencv几个形态学函数定义
形态学函数的头文件:#include <opencv2/imgproc/imgproc.hpp>
函数定义如下:
//! erodes the image (applies the local minimum operator)CV_EXPORTS_W void erode( InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() );//! dilates the image (applies the local maximum operator)CV_EXPORTS_W void dilate( InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() );//! applies an advanced morphological operation to the imageCV_EXPORTS_W void morphologyEx( InputArray src, OutputArray dst, int op, InputArray kernel, Point anchor=Point(-1,-1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() );
二、形态学函数解析
erode(腐蚀函数): InputArray src, 原图像
OutputArray dst, 结果输出图像
InputArray kernel, 结构元素
Point anchor=Point(-1,-1), 结构元素的原点
Point anchor=Point(-1,-1), 结构元素的原点
int iterations=1, 迭代次数
dilate(膨胀函数):InputArray src, 原图像
OutputArray dst, 结果输出图像
InputArray kernel, 结构元素
Point anchor=Point(-1,-1), 结构元素的原点
Point anchor=Point(-1,-1), 结构元素的原点
int iterations=1, 迭代次数
morphologyEx(形态学函数):InputArray src, 原图像
OutputArray dst, 结果输出图像
int op,cv::MORPH_OPEN(打开) cv::MORPH_CLOSE(关闭)
InputArray kernel, 结构元素
Point anchor=Point(-1,-1), 结构元素的原点
Point anchor=Point(-1,-1), 结构元素的原点
int iterations=1, 迭代次数
三、形态学函数使用举例及结果分析
程序对源图像进行多种形态学处理,不同参数的膨胀(如函数默认的结构元素是3x3,改为7x7,还可以设置多次迭代),腐蚀,打开,关闭,以及开关的级联。
#include <opencv2/core/core.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/highgui/highgui.hpp>int main(){// Read input imagecv::Mat image= cv::imread("binary.bmp");if (!image.data)return 0; // Display the imagecv::namedWindow("Image");cv::imshow("Image",image);// Erode the imagecv::Mat eroded;cv::erode(image,eroded,cv::Mat()); // Display the eroded imagecv::namedWindow("Eroded Image");cv::imshow("Eroded Image",eroded);cv::imwrite("eroded.bmp",eroded);// Dilate the imagecv::Mat dilated;cv::dilate(image,dilated,cv::Mat()); // Display the dialted imagecv::namedWindow("Dilated Image");cv::imshow("Dilated Image",dilated);cv::imwrite("dilated.bmp",dilated);// Erode the image with a larger s.e.cv::Mat element(7,7,CV_8U,cv::Scalar(1));cv::erode(image,eroded,element); // Display the eroded imagecv::namedWindow("Eroded Image (7x7)");cv::imshow("Eroded Image (7x7)",eroded);cv::imwrite("Eroded Image 7x7.bmp",eroded);// Erode the image 3 times.cv::erode(image,eroded,cv::Mat(),cv::Point(-1,-1),3); // Display the eroded imagecv::namedWindow("Eroded Image (3 times)");cv::imshow("Eroded Image (3 times)",eroded);cv::imwrite("Eroded Image 3 times.bmp",eroded);// Close the imagecv::Mat element5(5,5,CV_8U,cv::Scalar(1));cv::Mat closed;cv::morphologyEx(image,closed,cv::MORPH_CLOSE,element5); // Display the opened imagecv::namedWindow("Closed Image");cv::imshow("Closed Image",closed);cv::imwrite("Closed Image.bmp",closed);// Open the imagecv::Mat opened;cv::morphologyEx(image,opened,cv::MORPH_OPEN,element5); // Display the opened imagecv::namedWindow("Opened Image");cv::imshow("Opened Image",opened);cv::imwrite("Opened Image.bmp",opened);// Close and Open the imagecv::morphologyEx(image,image,cv::MORPH_CLOSE,element5);cv::morphologyEx(image,image,cv::MORPH_OPEN,element5); // Display the close/opened imagecv::namedWindow("Closed and Opened Image");cv::imshow("Closed and Opened Image",image);cv::imwrite("Closed and Opened Image.bmp",image);// Read input imageimage= cv::imread("binary.bmp");// Open and Close the imagecv::morphologyEx(image,image,cv::MORPH_OPEN,element5);cv::morphologyEx(image,image,cv::MORPH_CLOSE,element5); // Display the close/opened imagecv::namedWindow("Opened and Closed Image");cv::imshow("Opened and Closed Image",image);cv::imwrite("Opened and Closed Image.bmp",image);cv::waitKey();return 0;}
四、程序结果显示和分析:
binary.bmp(源图像)
eroded.bmp (腐蚀)消除一些小的噪声
dilated.bmp(膨胀)填充物体的空洞,膨胀物体
Eroded Image 7x7.bmp(腐蚀,结构元素尺寸是7x7)相比结构元素为默认3x3的相比,源图像的噪声跟大点的噪声也消失了
Eroded Image 3 times.bmp(腐蚀 3次迭代)迭代后结果不变
Opened Image.bmp(先腐蚀后膨胀)消除小噪声,然后再膨胀,平滑大物体,分离小物体
Closed Image.bmp(关闭 先膨胀在腐蚀)填充细小空洞,连接相邻物体,平滑边界
Opened and Closed Image.bmp 先打开在关闭
Closed and Opened Image.bmp先关闭再打开
0 0
- 二值形态学(膨胀,腐蚀,开启,关闭)的opencv实现
- 二值形态学(膨胀,腐蚀,开启,关闭)的opencv实现
- 二值形态学(膨胀,腐蚀,开启,关闭)的数学概念介绍
- openCv学习笔记(四)-数学形态学1(二值图像的膨胀、腐蚀、开运算和闭运算)
- openCv学习笔记(四)-数学形态学1(二值图像的膨胀、腐蚀、开运算和闭运算)
- openCv学习笔记(四)-数学形态学1(二值图像的膨胀、腐蚀、开运算和闭运算)
- 腐蚀,膨胀,opencv的形态学处理
- 二值形态学——膨胀,腐蚀
- 二值形态学——膨胀,腐蚀
- 图像二值形态学——腐蚀和膨胀的C语言实现
- 图像二值形态学——腐蚀和膨胀的C语言实现
- opencv形态学-腐蚀和膨胀
- opencv----形态学运算:腐蚀、膨胀
- 数学形态学之二值形态学(腐蚀、膨胀、开闭运算)基本原理
- opencv图像的形态学操作:腐蚀与膨胀
- 6基于opencv的形态学处理(一)腐蚀_膨胀
- Opencv-图像形态学处理比较(膨胀、腐蚀、开闭)
- opencv 形态学 腐蚀 膨胀(参考了百度百科上的解释)
- Android WebView使用深入浅出
- 支付宝:网页授权获取用户信息
- Hive-2.HiveQL查询中抽样查询
- java synchronized详解
- RSA密钥,JAVA与.NET,IOS之间转换
- 二值形态学(膨胀,腐蚀,开启,关闭)的opencv实现
- iOS开发-基础:监听app从后台恢复到前台
- LintCode:最近公共祖先
- POJ3279 Fliptile
- GitHub上Top20个 Python 语言机器学习项目
- 从 IT 中断中学到的最佳监控实践
- 监控之我见
- poj 3268 Silver Cow Party(最短路径)
- IDEA查看properties文件中文显示问题