一、有关图片的程序实例
1、图像显示
#include <opencv2/opencv.hpp>
using namespace cv;//包含cv命名空间
void main()
{
//用imread函数载入到图像存储数据结构Mat类中
Mat img = imread("C:\\Users\\Lmx6771\\Desktop\\123.jpg");
//imshow函数显示
imshow("123", img);
waitKey(0);//等待任意键按下
}
2、图像腐蚀
#include <opencv2/highgui/highgui.hpp>//highgui模块头文件
#include <opencv2/imgproc/imgproc.hpp>//图像处理头文件
using namespace cv;//包含cv命名空间
int main()
{
//载入原图
Mat srcImage = imread("C:\\Users\\Lmx6771\\Desktop\\123.jpg");
//显示原图
imshow("【原图】腐蚀操作", srcImage);
//腐蚀操作
Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
Mat dstImage;
erode(srcImage, dstImage, element);
//显示效果图
imshow("【效果图】腐蚀操作", dstImage);
waitKey(0);//等待任意键按下
return 0;
}
3、图像模糊
#include <opencv2/highgui/highgui.hpp>//highgui模块头文件
#include <opencv2/imgproc/imgproc.hpp>//图像处理头文件
using namespace cv;//包含cv命名空间
int main()
{
//载入原图
Mat srcImage = imread("C:\\Users\\Lmx6771\\Desktop\\123.jpg");
//显示原图
imshow("【原图】均值滤波", srcImage);
//均值滤波操作
Mat dstImage;
blur(srcImage, dstImage, Size(7, 7));
//显示效果图
imshow("【效果图】均值滤波", dstImage);
waitKey(0);//等待任意键按下
return 0;
}
4、canny边缘检测
将载入的图像转为灰度图,再用blur函数进行图像模糊以降噪,再用canny函数进行边缘检测。
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>//图像处理头文件
using namespace cv;//包含cv命名空间
int main()
{
//载入原图
Mat srcImage = imread("C:\\Users\\Lmx6771\\Desktop\\123.jpg");
//显示原图
imshow("【原图】Canny边缘检测", srcImage);
//canny边缘检测操作
//参数定义
Mat dstImage,edge,grayImage;
//创建与src同类型和大小的矩阵dst
dstImage.create(srcImage.size(), srcImage.type());
//将原图转换为灰度图
cvtColor(srcImage, grayImage, COLOR_BGR2GRAY);
//先用3×3内核来降噪
blur(grayImage, edge, Size(3,3));
//运行canny算子
Canny(edge, edge, 3, 9, 3);
//显示效果图
imshow("【效果图】Canny边缘检测", edge);
waitKey(0);//等待任意键按下
return 0;
}
二、有关视频的程序实例
1、读入视频:
(1)、先实例化再初始化:
VideoCapture capture;
capture.open("路径");
(2)、实例化的同时进行初始化
VideoCapture capture("路径");
(3)、用循环将每一帧显示出来;
#include <opencv2/opencv.hpp>
using namespace cv;//包含cv命名空间
int main()
{
//读入视频
VideoCapture capture("路径");
//循环显示每一帧
while (1)
{
//定义一个Mat变量,用于存储每一帧的图像
Mat frame;
//读取当前帧
capture >> frame;
//显示当前帧
imshow("读取视频", frame);
//掩饰30ms
waitKey(30);
}
return 0;
}
2、调用摄像头
将路径改为0就行:
#include <opencv2/opencv.hpp>
using namespace cv;//包含cv命名空间
int main()
{
//调用摄像头
VideoCapture capture(0);
//循环显示每一帧
while (1)
{
//定义一个Mat变量,用于存储每一帧的图像
Mat frame;
//读取当前帧
capture >> frame;
//显示当前帧
imshow("读取视频", frame);
//掩饰30ms
waitKey(30);
}
return 0;
}