Opencv开发笔记(三):使用形态学滤波对图像进行边缘及角点检测

形态学滤波可以用于检测图像中指定的特征点,接下来这篇文章我们运用Opencv中的形态学函数来检测灰度图中的直角和角点。

首先我们为了方便使用先封装一个名称为MorphoFeatures的类,然后就可以用来检测图像的特征,代码如下:

#ifndef MORPHOFEATURES_H
#define MORPHOFEATURES_H
#include 
#include 
#include 
using namespace cv;

class Morphofeatures{
private:
    //用于生成二值图像的阈值
    int threashold;
    //角点检测中用到的结构元素
    cv::Mat cross;
    cv::Mat diamond;
    cv::Mat squate;
    cv::Mat x;

    void applyThreshold(Mat &result){
        //使用阈值化
        if(threashold>0)
            cv::threshold(result,result,threashold,255,cv::THRESH_BINARY);
    }

public:
    void setThreshold(const int threashold){
        this->threashold=threashold;
    }

    cv::Mat getEdges(const Mat &image){
        //梯度图
        cv::Mat result;
        cv::morphologyEx(image,result,cv::MORPH_GRADIENT,cv::Mat());

        //阈值化以得到二值图
        applyThreshold(r

你可能感兴趣的:(OpenCv图形图像处理,c++开发笔记,Qt开发,opencv,计算机视觉,图像处理)