图片处理:
UIImage* img = [UIImage imageNamed:@"cat"];
Mat cvImage;
UIImageToMat(img, cvImage);
if (!cvImage.empty()) {
Mat gray;
cvtColor(cvImage, gray, CV_RGB2GRAY);//变为灰度
GaussianBlur(gray, gray, cv::Size(5,5), 1.2,1.2);//高斯模糊
Mat edges;
Canny(gray, edges, 0, 50);//查找边缘
cvImage.setTo(Scalar::all(225));//填充白色
cvImage.setTo(Scalar(0,128,255,255),edges);//修改边缘颜色
UIImageView* imgId = [[UIImageView alloc]initWithImage:MatToUIImage(cvImage)];
[self.view addSubview:imgId];
}
代码分析:
1.首先倒入图片,并将图片转换成cv格式
UIImageToMat(img, cvImage);
image.png
2.通过cvtColor将图片颜色转换为灰度,CV_RGB2GRAY
cvtColor(cvImage, gray, CV_RGB2GRAY);
image.png
3.将灰度图片高斯模糊
目的是为了减少查找的边缘过多
GaussianBlur(gray, gray, cv::Size(5,5), 1.2,1.2);
image.png
4.查找边缘
Canny(gray, edges, 0, 50);
image.png
5.给原图片填充浅灰色
cvImage.setTo(Scalar::all(225));
image.png
6.把检测边缘图修改颜色并粘回图片上
cvImage.setTo(Scalar(0,128,255,255),edges);
image.png
参考: https://blog.csdn.net/zww1984774346/article/details/51180252