6基于opencv的形态学处理(一)腐蚀_膨胀
2017-11-17 14:43
1186 查看
形态学处理:腐蚀和膨胀
一、腐蚀函数erode
1.1示例
MatScrImage = imread("E:\\1TJQ\\Opencv\\Images\\image1.jpg");//读入图像
MatOutImage5;
erode(ScrImage, OutImage5, getStructuringElement(MORPH_RECT,Size(5, 5)));//腐蚀操作
1.2 erode ()函数各个参数详解
Ø ScrImage:输入图像
Ø OutImage3:输出图像
Ø getStructuringElement(MORPH_RECT,Size(5, 5)):第三个参数,InputArray类型的kernel,腐蚀操作的内核。若为NULL时,表示的是使用参考点位于中心3x3的核。我们一般使用函数getStructuringElement配合这个参数的使用。getStructuringElement函数会返回指定形状和尺寸的结构元素(内核矩阵)。(具体看上文中浅出部分dilate函数的第三个参数讲解部分)
1.3函数getStructuringElement(MORPH_RECT,Size(5, 5))详解
1.3.1 getStructuringElement函数的第一个参数表示内核的形状,我们可以选择如下三种形状之一:
矩形:MORPH_RECT
交叉形:MORPH_CROSS
椭圆形:MORPH_ELLIPSE
而getStructuringElement函数的第二和第三个参数分别是内核的尺寸以及锚点的位置。
我们一般在调用erode以及dilate函数之前,先定义一个Mat类型的变量来获得getStructuringElement函数的返回值。对于锚点的位置,有默认值Point(-1,-1),表示锚点位于中心。且需要注意,十字形的element形状唯一依赖于锚点的位置。而在其他情况下,锚点只是影响了形态学运算结果的偏移。
1.3.2 getStructuringElement函数相关的调用示例代码如下:
intg_nStructElementSize = 3; //结构元素(内核矩阵)的尺寸
//获取自定义核
Mat element =getStructuringElement(MORPH_RECT,
Size(2*g_nStructElementSize+1,2*g_nStructElementSize+1),
Point(g_nStructElementSize, g_nStructElementSize ));
二、膨胀函数dilate
1.1示例
MatScrImage = imread("E:\\1TJQ\\Opencv\\Images\\image1.jpg");//读入图像
MatOutImage5;
dilate(ScrImage, OutImage5, getStructuringElement(MORPH_RECT,Size(5, 5))); //腐蚀操作
1.2 dilate ()函数各个参数详解
Ø ScrImage:输入图像
Ø OutImage3:输出图像
Ø getStructuringElement(MORPH_RECT,Size(5, 5)):第三个参数,InputArray类型的kernel,膨胀操作的内核。若为NULL时,表示的是使用参考点位于中心3x3的核。我们一般使用函数getStructuringElement配合这个参数的使用。getStructuringElement函数会返回指定形状和尺寸的结构元素(内核矩阵)。(具体看上文中浅出部分erode函数的第三个参数讲解部分)
三、完整程序示例
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/opencv.hpp>
#include <vector>
#include <cstdio>
using namespacestd;
using namespacecv;
int main()
{
Mat ScrImage, ScrImgaeCopy1, OutImage, OutImage1, OutImage2,OutImage3, OutImage4, OutImage5, OutImage6, OutImage7, OutImage8, OutImage9;
ScrImage = imread("E:\\1TJQ\\Opencv\\Images\\image1.jpg");//读入图像
namedWindow("【原图】");
imshow("【原图】", ScrImage);
erode(ScrImage,OutImage5, getStructuringElement(MORPH_RECT,Size(5, 5)));//腐蚀操作
dilate(ScrImage,OutImage6, getStructuringElement(MORPH_RECT,Size(5, 5))); //膨胀操作
namedWindow("【效果图erode】");
imshow("【效果图erode】", OutImage5);
namedWindow("【效果图dilate】");
imshow("【效果图dilate】",OutImage6);
waitKey(0);
return NULL;
}
参考内容:
http://www.cnblogs.com/mq0036/p/5902104.html
一、腐蚀函数erode
1.1示例
MatScrImage = imread("E:\\1TJQ\\Opencv\\Images\\image1.jpg");//读入图像
MatOutImage5;
erode(ScrImage, OutImage5, getStructuringElement(MORPH_RECT,Size(5, 5)));//腐蚀操作
1.2 erode ()函数各个参数详解
Ø ScrImage:输入图像
Ø OutImage3:输出图像
Ø getStructuringElement(MORPH_RECT,Size(5, 5)):第三个参数,InputArray类型的kernel,腐蚀操作的内核。若为NULL时,表示的是使用参考点位于中心3x3的核。我们一般使用函数getStructuringElement配合这个参数的使用。getStructuringElement函数会返回指定形状和尺寸的结构元素(内核矩阵)。(具体看上文中浅出部分dilate函数的第三个参数讲解部分)
1.3函数getStructuringElement(MORPH_RECT,Size(5, 5))详解
1.3.1 getStructuringElement函数的第一个参数表示内核的形状,我们可以选择如下三种形状之一:
矩形:MORPH_RECT
交叉形:MORPH_CROSS
椭圆形:MORPH_ELLIPSE
而getStructuringElement函数的第二和第三个参数分别是内核的尺寸以及锚点的位置。
我们一般在调用erode以及dilate函数之前,先定义一个Mat类型的变量来获得getStructuringElement函数的返回值。对于锚点的位置,有默认值Point(-1,-1),表示锚点位于中心。且需要注意,十字形的element形状唯一依赖于锚点的位置。而在其他情况下,锚点只是影响了形态学运算结果的偏移。
1.3.2 getStructuringElement函数相关的调用示例代码如下:
intg_nStructElementSize = 3; //结构元素(内核矩阵)的尺寸
//获取自定义核
Mat element =getStructuringElement(MORPH_RECT,
Size(2*g_nStructElementSize+1,2*g_nStructElementSize+1),
Point(g_nStructElementSize, g_nStructElementSize ));
二、膨胀函数dilate
1.1示例
MatScrImage = imread("E:\\1TJQ\\Opencv\\Images\\image1.jpg");//读入图像
MatOutImage5;
dilate(ScrImage, OutImage5, getStructuringElement(MORPH_RECT,Size(5, 5))); //腐蚀操作
1.2 dilate ()函数各个参数详解
Ø ScrImage:输入图像
Ø OutImage3:输出图像
Ø getStructuringElement(MORPH_RECT,Size(5, 5)):第三个参数,InputArray类型的kernel,膨胀操作的内核。若为NULL时,表示的是使用参考点位于中心3x3的核。我们一般使用函数getStructuringElement配合这个参数的使用。getStructuringElement函数会返回指定形状和尺寸的结构元素(内核矩阵)。(具体看上文中浅出部分erode函数的第三个参数讲解部分)
三、完整程序示例
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/opencv.hpp>
#include <vector>
#include <cstdio>
using namespacestd;
using namespacecv;
int main()
{
Mat ScrImage, ScrImgaeCopy1, OutImage, OutImage1, OutImage2,OutImage3, OutImage4, OutImage5, OutImage6, OutImage7, OutImage8, OutImage9;
ScrImage = imread("E:\\1TJQ\\Opencv\\Images\\image1.jpg");//读入图像
namedWindow("【原图】");
imshow("【原图】", ScrImage);
erode(ScrImage,OutImage5, getStructuringElement(MORPH_RECT,Size(5, 5)));//腐蚀操作
dilate(ScrImage,OutImage6, getStructuringElement(MORPH_RECT,Size(5, 5))); //膨胀操作
namedWindow("【效果图erode】");
imshow("【效果图erode】", OutImage5);
namedWindow("【效果图dilate】");
imshow("【效果图dilate】",OutImage6);
waitKey(0);
return NULL;
}
参考内容:
http://www.cnblogs.com/mq0036/p/5902104.html
相关文章推荐
- OpenCV&图像处理_3:以腐蚀[eroding]和膨胀[dilating]为基础的形态学操作和图像金字塔[image pyramids]
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- OpenCV图像处理形态学操作腐蚀Erode与膨胀Dilate
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- 【OpenCV3图像处理】形态学 --- 膨胀、腐蚀、开运算 闭运算、形态学梯度、顶帽运算、黑帽运算
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- opencv图像处理——形态学腐蚀膨胀练习示例代码
- Opencv-图像形态学处理比较(膨胀、腐蚀、开闭)
- [转]【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- opencv 图像处理 形态学操作 腐蚀 膨胀 开闭运算 阈值二值化 图像卷积 图像金字塔 Sobel算子 Laplacian 算子 candy边缘检测 霍夫变换 直方图
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- OpenCV1.0图像处理形态学操作腐蚀Erode与膨胀Dilate
- Opencv--形态学图像处理--膨胀与腐蚀,开操作与闭操作
- opencv学习笔记第五章:基于形态学运算的图像变换(1)形态学运算进行腐蚀和膨胀
- 学习【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀----思维导图笔记
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- OpenCV图像处理形态学操作腐蚀Erode与膨胀Dilate