首先完成Opencv配置后,几个简单的图像处理程序。
一、图像显示:
#include<opencv2/opencv.hpp>
using namespace cv; //包含命名空间
void main()
{
Mat img = imread("D://langduo.jpg"); //载入图像
imshow("【原始图】", img); //显示图像
waitKey(0); //等待任意键按下
}
其中#include<opencv2/opencv.hpp>为Opencv头文件的包含。using namespace cv; 为命名空间的包含
Mat为图像储存数据结构,imshow()为图像显示函数。
效果图就不放了。
二、图像腐蚀:
#include<opencv2/highgui/highgui.hpp> //highgui模块头文件
#include<opencv2/imgproc/imgproc.hpp> //opencv图像处理头文件
using namespace cv; //包含命名空间
int main()
{
Mat img = imread("D://picture//langduo.jpg"); //载入原图像
imshow("【原始图】", img); //显示原图像
Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); //对原图像进行腐蚀操作
Mat Img;
erode(img, Img, element);
imshow("【效果图】", Img); //显示效果图
waitKey(0); //等待任意键按下
return 0;
}
首先载入和显示一幅图片,然后定义一个Mat类型的变量来获得getStructuringElement 函数的返回值,而getStructuringElement函数的返回值为指定形状和尺寸的结构元素(内核矩阵)。参数准备完毕,用erode函数进行图像腐蚀操作,imshow函数进行显示。效果图略。
三、图像模糊
#include<opencv2/highgui/highgui.hpp> //包含头文件以及命名空间
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main()
{
Mat img = imread("D://picture//langduo.jpg"); //载入原始图
imshow("【原始图】", img); //显示原始图
Mat Img;
blur(img, Img, Size(7, 7)); //进行均值滤波操作
imshow("【均值滤波效果图】", Img); //显示效果图
waitKey(0);
}
这里使用均值滤波操作,效果图略。
四、canny边缘检测
/
// 包含程序所使用的头文件和命名空间
//
#include<opencv2/imgproc/imgproc.hpp>
#include<opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat img = imread("D://picture//曼巴.jpg"); //载入原始图
imshow("【原始图】", img); //显示原始图
Mat edge, grayImage; //参数定义
cvtColor(img, grayImage, CV_BGR2GRAY); //将原图像转换为灰度图
blur(grayImage, edge , Size(3,3)); //先使用3x3内核来降噪
Canny(edge,edge,3,9,3); //运行Canny算子
imshow("【均值滤波效果图】",edge ); //显示效果图
waitKey(0); //等待任意键按下
return 0;
}
首先载入图像,将其转为灰度图再利用blur函数进行图像模糊以降噪,然后利用canny函数进行边缘检测,最后显示。效果图略。