OpenCv 使用morphologyEx 进行更多的变化

关于运算的各种原理看这
在下文就不介绍原理了

所使用的函数为morphologyEx,

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() );

前两个参数为输入和输出图像,第三个为操作类型
Opening: MORPH_OPEN : 2
Closing: MORPH_CLOSE: 3
Gradient: MORPH_GRADIENT: 4
Top Hat: MORPH_TOPHAT: 5
Black Hat: MORPH_BLACKHAT: 6
第四个参数为内核。

下面的代码只使用了开运算,内核为5*5,

#include "opencv2/core.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/videoio.hpp"
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
    Mat a = imread("7f6a384c510fd9f9da3ee67b232dd42a2834a40d.jpg");
    Mat ele = getStructuringElement(MORPH_RECT, Size(5, 5));
    imshow("yuantu", a);
    morphologyEx(a, a, MORPH_OPEN, ele);
    imshow("open", a);
    cvWaitKey(100000);
}

你可能感兴趣的:(opencv)