c – 帮助使用扩张功能OpenCV

在下面的代码中我想使用dilate函数,但我不知道如何将Mat类转换为InputArray和OutputArray.你能帮助我吗?

使用这个原型函数

void dilate(InputArray src,OutputArray dst,InputArray kernel,Point anchor=Point(-1,-1),int iterations=1,int borderType=BORDER_CONSTANT,const Scalar& borderValue=morphologyDefaultBorderValue() )

这是我的代码

#include "opencv2/opencv.hpp"

using namespace cv;

int main(int,char**)
{
    Mat edges;

    VideoCapture cap(0); // open the default camera
    if(!cap.isOpened())  // check if we succeeded
        return -1;


    for(;;)
    {

        Mat frame;
        cap >> frame; // get a new frame from camera
        cvtColor(frame,edges,CV_BGR2GRAY);
        GaussianBlur(edges,Size(7,7),1.5,1.5);
        //dilate(edges,NULL);
        Canny(edges,30,3);
        imshow("edges",frame);
        if(waitKey(30) >= 0) break;
    }
    // the camera will be deinitialized automatically in VideoCapture destructor
    return 0;
}

解决方法

Stack Overflow上有一些例子,like this
int erosion_size = 6;   
cv::Mat element = cv::getStructuringElement(cv::MORPH_CROSS,cv::Size(2 * erosion_size + 1,2 * erosion_size + 1),cv::Point(erosion_size,erosion_size) );

cv::dilate(edges,element);

Or this

cv::dilate(edges,cv::Mat(),cv::Point(-1,-1));

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...