OpenCV-图片叠加-模糊-腐蚀-边缘检测
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);
}