读取图片
- 预期效果:从指定路径读取一张图片并显示出来。
- 源代码:
#include <iostream>//输入输出流
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;//c++标准库
#ifdef _DEBUG
#pragma comment(lib,"opencv_world453d.lib")
#else
#pragma comment(lib,"opencv_world453.lib")
#endif // _DEBUG
int main() {
string path = "Resources/test.png";//相对路径
Mat outImg=imread(path);//从指定路径读取图片信息
imshow("图片", outImg);//将图片显示出来
waitKey(0);//参数为0时暂停时间是无穷
return 0;
}
必要的补充:
- cv::Mat cv::imread(const cv::String &filename,int flags);
作用:从一个文件中加载一张图片。
输入参数1:const string类型,图片文件的路径(带文件名及后缀)。
输入参数2:int类型,读取的格式, 返回:Mat对象(Mat类型是用于存储图像信息的矩阵)。 - void cv::imshow(const cv::string &winname,cv::InputArray mat);
作用:将图片显示在窗口中。
输入参数1:const string类型,窗口的名称。
输出参数2:mat类型,待输出的图片。
返回:空 - int cv::waitKey(int delay);
作用:延时函数,如果延时期间有按键按下则立即结束并返回按键的ASCII码。当参数delay=0,程序一直延时,直到有按键按下去;当参数delay>0,则程序延时delay毫秒,并同时等待按键按下。
输入参数:int类型,延时的时长;/或选择0一直延时。
返回:返回按键的ASCII码。
读取视频文件
视频就是由一张张图片组成的,所以在读取图片的基础上套一个while循环,不断地获取新的图片并显示出来就可以完成视频的读取了。
- 预期效果:从指定路径读取一个视频文件(视频的图像,不包括音频),并播放出来。
- 源代码:
#include <iostream>//输入输出流
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;//c++标准库
#ifdef _DEBUG
#pragma comment(lib,"opencv_world453d.lib")
#else
#pragma comment(lib,"opencv_world453.lib")
#endif // _DEBUG
int main() {
string path = "Resources/test_video.mp4";
VideoCapture testVideo(path);//从视频文件的路径读取
Mat videoImg;//接收每一帧读取的图像
while (true) {//循环不断获取新的图片并显示出来
testVideo.read(videoImg);//读取摄像头的照片并存放在Mat类型的videoImg中
imshow("Video", videoImg);//将图片显示出来
waitKey(3);//相邻每帧图片间隔时间(单位:ms
}
return 0;
}
必要的补充:
- class cv::VideoCapture
作用:对视频进行读取操作以及调用摄像头。
实例化以后传入string类型的视频文件路径以读取文件;传入int类型接入的指定摄像头的ID以调用指定摄像头。
调用摄像头
在读取视频程序的基础上,将VideoCapture类型的实例传进string类型路径换成int类型的摄像头ID后就完成了调用摄像头操作。
- 预期效果:调用指定摄像头,窗口中显示摄像头拍到的内容。
- 源代码:
#include <iostream>//输入输出流
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;//c++标准库
#ifdef _DEBUG
#pragma comment(lib,"opencv_world453d.lib")
#else
#pragma comment(lib,"opencv_world453.lib")
#endif // _DEBUG
int main() {
VideoCapture testVideo(0);//调用0号摄像头
Mat videoImg;
while (true) {//循环不断获取新的图片并显示出来
testVideo.read(videoImg);//读取摄像头的照片并存放在Mat类型的videoImg中
imshow("Video", videoImg);//将图片显示出来
waitKey(3);//相邻每帧图片间隔时间(单位:ms
}
return 0;
}