微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/c/117314.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐