1. 图像显示
#include <opencv2/opencv.hpp> //头文件
using namespace cv; //包含cv命名空间
int main( )
{
// 【1】读入一张图片,载入图像
Mat srcImage = imread("1.jpg");
// 【2】显示载入的图片
imshow("【原始图】",srcImage);
// 【3】等待任意按键按下
waitKey(0);
return 0;
}
2. 图像腐蚀
腐蚀:即用图像中的暗色部分“腐蚀”掉图像中的高亮部分。
#include <opencv2/highgui/highgui.hpp> //OpenCv highgui 模块头文件
#include <opencv2/imgproc/imgproc.hpp> //OpenCV 图像处理头文件
using namespace cv;
int main( )
{
//载入原图
Mat srcImage = imread("1.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"
#include "opencv2/imgproc/imgproc.hpp"
using namespace cv;
int main( )
{
//【1】载入原始图
Mat srcImage=imread("1.jpg");
//【2】显示原始图
imshow( "均值滤波【原图】", srcImage );
waitKey(0);
//【3】进行均值滤波操作
Mat dstImage;
blur( srcImage, dstImage, Size(7, 7));
//【4】显示效果图
imshow( "均值滤波【效果图】" ,dstImage );
waitKey( 0 );
}
4. 读取并播放视频
用OpenCV中的VideoCapture类,对视频进行读取显示,以及调用摄像头。
有两种读入视频的方法
- 先实例化再初始化:
VideoCapture capture;
capture.open("1.avi");
- 在实例化的同时进行初始化
VideoCapture capture("1.avi");
#include <opencv2/opencv.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main( )
{
//【1】读入视频
VideoCapture capture("1.avi");
//【2】循环显示每一帧
while(1)
{
Mat frame;//定义一个Mat变量,用于存储每一帧的图像
capture>>frame; //读取当前帧
//若视频播放完成,退出循环
if (frame.empty())
{
break;
}
imshow("读取视频",frame); //显示当前帧
waitKey(30); //延时30ms
}
return 0;
}
5. 调用摄像头采集图像
#include <opencv2/opencv.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main( )
{
//【1】从摄像头读入视频
VideoCapture capture(0);
//【2】循环显示每一帧
while(1)
{
Mat frame; //定义一个Mat变量,用于存储每一帧的图像
capture>>frame; //读取当前帧
imshow("./读取视频",frame); //显示当前帧
waitKey(30); //延时30ms
}
return 0;
}
可能imshow函数会出错:imshow函数出错可能解决方法