在上一节中,已经完成了OPENCV的配置,在本节接触几个Opencv图像处理相关的程序,看看opencv用简洁的代码能够实现哪些有趣的图像效果。
1、第一个程序:图像显示
#include<opencv2/opencv.hpp> using namespace cv;//包含cv命名空间 void main() { Mat srcImage = imread("D:\FOR_SLAM\lena.jpg"); imshow("原始图",srcImage);//显示图像 waitKey(0);//等待任意按键按下 }
2、第二个程序:图像腐蚀
如何用opencv实现最基本的形态学运算之一---腐蚀,即用图像中的暗色部分“腐蚀”掉图像中的高亮部分。
#include<opencv2/highgui/highgui.hpp>//opencv highgui模块头文件 #include<opencv2/imgproc/imgproc.hpp>//opencv图像处理头文件 using namespace cv;//包含cv命名空间 int main() { //载入原图 Mat srcImage = imread("D:\FOR_SLAM\lena.jpg"); //显示原图 imshow("原始图",srcImage);//显示图像 //进行腐蚀操作 Mat element = getStructuringElement(MORPH_RECT,Size(15,15)); Mat dstImage; erode(srcImage,dstImage,element); //显示效果图 imshow("腐蚀效果图",dstImage); waitKey(0);//等待任意按键按下 return (0); }
定义一个Mat类型的变量来获取getStructuringElement函数的返回值,而getStructuringElement函数的返回值为指定形状和尺寸的结构元素(内核矩阵)。参数准备完毕,接着便可以调用erode函数进行图像腐蚀操作。
3、第三个程序:图像模糊
opencv对图像进行均值滤波操作,主要使用进行均值滤波操作额blur函数。
#include<opencv2/highgui/highgui.hpp>//opencv highgui模块头文件 #include<opencv2/imgproc/imgproc.hpp>//opencv图像处理头文件 using namespace cv;//包含cv命名空间 int main() { //载入原图 Mat srcImage = imread("D:\FOR_SLAM\lena.jpg"); //显示原图 imshow("原始图",srcImage);//显示图像 //进行均值滤波操作 Mat dstImage; blur(srcImage,dstImage,Size(7,7)); //显示效果图 imshow("滤波效果图",dstImage); waitKey(0);//等待任意按键按下 return (0); }
4、第四个程序:canny边缘检测
首先,载入图像,并将其转成灰度图,再用blur函数进行图像模糊以降噪,然后用canny函数进行边缘检测。