【笔记】Opencv 形态学边界提取:getStructuringElement()可以生成形态学操作中用到的核 Mat ...(int shape,Size ksize,Point anchor)

getStructuringElement 原型:

Mat getStructuringElement(int shape, //核的形状  0:矩形  1:十字交叉形  2: 椭圆 
						  Size ksize,//核大小
						  Point anchor=Point(-1,-1) //核中心位置,默认位于形状中心处
						  );

 

#include "core/core.hpp"
#include "highgui/highgui.hpp"
#include "imgproc/imgproc.hpp"
#include <iostream>
 
using namespace cv;
 
int main(int argc,char *argv[])
{
	Mat elementRect,elementCross,elementEllipse;
	elementRect=getStructuringElement(MORPH_RECT,Size(3,3),Point(-1,-1));
	elementCross=getStructuringElement(MORPH_CROSS,Size(3,3),Point(-1,-1));
	elementEllipse=getStructuringElement(MORPH_ELLIPSE,Size(3,5),Point(-1,-1));
 
	std::cout<<"3*3矩形核:"<<std::endl<<elementRect<<std::endl;
	std::cout<<"3*3十字叉形核:"<<std::endl<<elementCross<<std::endl;
	std::cout<<"3*3椭圆形核:"<<std::endl<<elementEllipse<<std::endl;
	system("pause");
}

 

#include "core/core.hpp"
#include "highgui/highgui.hpp"
#include "imgproc/imgproc.hpp"
 
using namespace cv;
 
 
int main(int argc,char *argv[])
{
	Mat image,imageGray,imageDilate,imageErode,imageBorder;
	image=imread(argv[1]);
	resize(image,image,Size(400,400));
	cvtColor(image,imageGray,CV_RGB2GRAY);
 
	//enum { MORPH_RECT=0, MORPH_CROSS=1, MORPH_ELLIPSE=2 };
	Mat element=getStructuringElement(1,Size(3,3),Point(-1,-1));
	dilate(imageGray,imageDilate,element,Point(-1,-1));
	erode(imageGray,imageErode,element,Point(-1,-1));
	imageBorder=imageDilate-imageErode;
	imshow("Source image",image);
	imshow("Dilate",imageDilate);
	imshow("Erode",imageErode);
	imshow("Border",imageBorder);	
	waitKey();
}

 

 

 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值