我的个人博客:谋仁·Blog
公众号:谋仁的麻袋
读取图片
- 预期效果:从指定路径读取一张图片并显示出来。
- 源代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #include <iostream> #include <opencv2/opencv.hpp>
using namespace cv; using namespace std; #ifdef _DEBUG #pragma comment(lib,"opencv_world453d.lib") #else #pragma comment(lib,"opencv_world453.lib") #endif
int main() { string path = "Resources/test.png"; Mat outImg=imread(path); imshow("图片", outImg); waitKey(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循环,不断地获取新的图片并显示出来就可以完成视频的读取了。
预期效果:从指定路径读取一个视频文件(视频的图像,不包括音频),并播放出来。
源代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include <iostream> #include <opencv2/opencv.hpp>
using namespace cv; using namespace std; #ifdef _DEBUG #pragma comment(lib,"opencv_world453d.lib") #else #pragma comment(lib,"opencv_world453.lib") #endif
int main() { string path = "Resources/test_video.mp4"; VideoCapture testVideo(path); Mat videoImg; while (true) { testVideo.read(videoImg); imshow("Video", videoImg); waitKey(3); } return 0; }
|
必要的补充:
- class cv::VideoCapture
作用:对视频进行读取操作以及调用摄像头。
实例化以后传入string类型的视频文件路径以读取文件;传入int类型接入的指定摄像头的ID以调用指定摄像头。
调用摄像头
在读取视频程序的基础上,将VideoCapture类型的实例传进string类型路径换成int类型的摄像头ID后就完成了调用摄像头操作。
- 预期效果:调用指定摄像头,窗口中显示摄像头拍到的内容。
- 源代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #include <iostream> #include <opencv2/opencv.hpp>
using namespace cv; using namespace std; #ifdef _DEBUG #pragma comment(lib,"opencv_world453d.lib") #else #pragma comment(lib,"opencv_world453.lib") #endif
int main() { VideoCapture testVideo(0); Mat videoImg; while (true) { testVideo.read(videoImg); imshow("Video", videoImg); waitKey(3); } return 0; }
|