赞
踩
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() ); /******************************************************************* * src: 输入图像 * dst: 输出图像 * op: 操作类型 * kernel: 操作的核 * 参数为0:中心3*3的核 * anchor: 锚点 * (-1,-1):表示位于中心 * iterations: 迭代的次数 * borderType: 图像外部像素的某种边界模式 * borderValue: 边界值,一般不管 *********************************************************************/ //操作类型 enum MorphTypes{ MORPH_ERODE = 0, //腐蚀 MORPH_DILATE = 1, //膨胀 MORPH_OPEN = 2, //开操作 MORPH_CLOSE = 3, //闭操作 MORPH_GRADIENT = 4, //梯度操作 MORPH_TOPHAT = 5, //顶帽操作 MORPH_BLACKHAT = 6, //黑帽操作 MORPH_HITMISS = 7 //随机操作,只支持CV_8UC1模式 }
获取图像结构元素
Mat getStructuringElement(int shape, Size ksize, Point anchor = Point(-1,-1));
/*******************************************************************
* shape: 形状类型
* ksize: 大小
* anchor: 锚点
* (-1,-1):表示位于中心
*********************************************************************/
//shape取值
enum MorphShapes {
MORPH_RECT = 0, //矩形
MORPH_CROSS = 1, //十字交叉
MORPH_ELLIPSE = 2 //椭圆
};
#include <iostream> #include <opencv2/opencv.hpp> using namespace std; using namespace cv; int main() { Mat src = imread("test.jpg");//读取图片 if (src.empty()) { cout << "could not load img..."; return -1; } namedWindow("test");//设置窗口名称 imshow("test", src); Mat dst; Mat kernel = getStructuringElement(MORPH_RECT, Size(11, 11), Point(-1, -1)); morphologyEx(src, dst, MORPH_OPEN, kernel); imshow("output", dst); waitKey(0); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。