OpenCV-图片叠加-模糊-腐蚀-边缘检测

2020-07-26  本文已影响0人  challenges_79d9

OpenCV案例

1.图片叠加

+(UIImage*)opencvImage:(UIImage*)srcImage dst:(UIImage*)dstImage{

    //第一步:准备两种图片

    Mat mat_image_src;

    UIImageToMat(srcImage, mat_image_src);

    Mat mat_image_dst;

    UIImageToMat(dstImage, mat_image_dst);

     //第二步:创建叠加区域->开辟了一块内存空间

    Mat mat_roi = mat_image_src(Rect2i(0, 0, mat_image_dst.cols, mat_image_dst.rows));

    

    //第三步:图片叠加->加水印->合并之后覆盖原来的图片

    //参数一:第一个图片数组

    //参数二:第一个图片数组->权重

    //参数三:第二个图片数组

    //参数四:第二个图片数组->权重

    //参数五:权重和基础之上标量值

    //参数六:输出数组->输出目标

    //dst = src1*alpha + src2*beta + gamma;

    addWeighted(mat_roi, 0, mat_image_dst, 1, 0, mat_roi);

    

    //第四步:将Mat图片->iOS图片

    return MatToUIImage(mat_image_src);

}

+(UIImage*)opencvImageErode:(UIImage*)srcImage{

    //第一步:加载图片

    Mat mat_image_src;

    UIImageToMat(srcImage, mat_image_src);

    

    //案例一:图片腐蚀效果

    //第二步:进行腐蚀操作

    //参数一:腐蚀类型->矩形方式

    //参数二:腐蚀大小->范围(腐蚀单位大小)->腐蚀程度大小

    Mat mat_element = getStructuringElement(MORPH_RECT, Size2i(7, 7));

    //开始腐蚀

    Mat mat_image_dst;

    //参数一:原始图片

    //参数二:腐蚀之后的图片

    //参数三:腐蚀范围

    erode(mat_image_src, mat_image_dst, mat_element);

    

    //案例二:图片模糊效果

//    Mat mat_image_dst;

//    blur(mat_image_src, mat_image_dst, Size2i(10, 10));

    

    //案例三:图片边缘检测

//    //创建和mat_image_src同样大小的OpenCV图片(Mat)

//    Mat mat_image_dst;

//    mat_image_dst.create(mat_image_src.size(), mat_image_src.type());

//

//    //将图片进行灰度处理

//    Mat mat_image_gray;

//    cvtColor(mat_image_src, mat_image_gray, COLOR_BGR2GRAY);

//

//    //使用3*3内核来降噪处理

//    Mat mat_image_edge;

//    blur(mat_image_gray, mat_image_edge, Size2i(3, 3));

//

//    //进行Canny算子处理

//    Canny(mat_image_edge, mat_image_edge, 3, 9, 3);

    

    //第四步:将OpenCV图片->转成iOS图片

    return MatToUIImage(mat_image_dst);

}

上一篇下一篇

猜你喜欢

热点阅读