OpenCV均值滤波+膨胀腐蚀+Canny
转自:https://blog.****.net/routine__007/article/details/80444840
1. 图像显示
#include<opencv2\opencv.hpp>
using namespace cv; //包含cv命名空间
void main(){
Mat img = imread("1.jpg"); //载入图片
imshow("【原始图】", img); //显示图像
waitKey(0); //等待任意按键按下
}
2. 图像腐蚀
腐蚀,即用图像中的暗色部分“腐蚀”掉图像中的高亮部分。
#include<opencv2\highgui\highgui.hpp> //OpenCV highgui模块头文件
#include<opencv2\imgproc\imgproc.hpp> //OpenCV 图像处理头文件
using namespace cv; //包含cv命名空间
int main(){
//载入图片
Mat img = imread("1.jpg");
//显示原图
imshow("【原图】腐蚀操作", img);
//进行腐蚀操作
Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
Mat dstimg;
erode(img, dstimg, element);
//显示效果图
imshow("【效果图】腐蚀操作", dstimg);
waitKey(0);
return 0;
}
3. 膨胀
膨胀,和腐蚀相反,从图像直观来看,就是将图像光亮部分放大,黑暗部分缩小。
#include<opencv2\highgui\highgui.hpp> //OpenCV highgui模块头文件
#include<opencv2\imgproc\imgproc.hpp> //OpenCV 图像处理头文件
using namespace cv; //包含cv命名空间
int main(){
//载入图片
Mat img = imread("1.jpg");
//显示原图
imshow("【原图】膨胀操作", img);
//进行膨胀操作
Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
Mat dstimg;
dilate(img, dstimg, element);
//显示效果图
imshow("【效果图】膨胀操作", dstimg);
waitKey(0);
return 0;
}
4. 均值滤波
#include<opencv2\highgui\highgui.hpp>
#include<opencv2\imgproc\imgproc.hpp>
using namespace cv;
int main(){
//载入原图
Mat img = imread("1.jpg");
//显示原图
imshow("【原图】均值滤波", img);
//进行均值滤波操作
Mat dstimg;
blur(img, dstimg, Size(7, 7));
//显示效果图
imshow("【效果图】均值滤波", dstimg);
waitKey(0);
return 0;
}
5. canny边缘检测
#include<opencv2\highgui\highgui.hpp>
#include<opencv2\imgproc\imgproc.hpp>
using namespace cv;
int main(){
//载入原图
Mat srcImage = imread("1.jpg");
//显示原图
imshow("【原图】Canny边缘检测", srcImage);
Mat dstImage, edge, grayImage;
//【1】创建于src同类型和大小的矩阵dst
dstImage.create(srcImage.size(), srcImage.type());
//【2】将原图像转换成灰度图像
cvtColor(srcImage, grayImage, COLOR_BGR2GRAY);
//【3】先使用3*3内核来降噪
blur(grayImage, edge, Size(3, 3));
//【4】运行Canny算子
Canny(edge, edge, 3, 9, 3);
//显示效果图
imshow("【效果图】Canny边缘检测", edge);
waitKey(0);
return 0;
}