c – 帮助使用扩张功能OpenCV

前端之家收集整理的这篇文章主要介绍了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.f2er.com/c/117314.html

猜你在找的C&C++相关文章