700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Opencv按‘s‘键连续保存多张图片

Opencv按‘s‘键连续保存多张图片

时间:2022-08-05 20:29:24

相关推荐

Opencv按‘s‘键连续保存多张图片

一、相关代码

#include <opencv2/opencv.hpp>#include <opencv2/imgcodecs.hpp>#include <opencv2/highgui.hpp>#include <iostream>using namespace std;using namespace cv;int main(){int d = 0;char str[300] = { 0 };VideoCapture capture;capture.open(0);//判断相机是否打开if (!capture.isOpened()){cout << "open camera failed" << endl;return -1;}while (true){Mat camera_frame;capture >> camera_frame; //读取图像帧至camera_frame// 第二种获取方式//capture.read(camera_frame);if (!camera_frame.empty()){imshow("picture", camera_frame);}// 按“s”键保存图片至指定路径int k = waitKey(2);if (k == 's'){// 路径斜杠要注意,容易出错sprintf_s(str,300, "D:\\360MoveData\\Users\\ZNC\\Desktop\\op\\%d.jpg", ++d);imwrite(str, camera_frame);}// 按q键退出程序if (k == 'q'){break;}}// 销毁显示窗口,不添加按q会报错cv::destroyAllWindows();}

二、相关知识

(1)sprintf_s()函数

sprintf_s是sprintf的安全版本,指定缓冲区长度来避免sprintf()存在的溢出风险,区别在sprintf_s第二个参数,可以控制缓冲区大小。

sprintf/sprintf_s指的是字符串格式化命令,其功能是把格式化的数据写入指定字符串中。

sprintf 是个变参函数。使用sprintf 对于写入buffer的字符数是没有限制的,这就存在了buffer溢出的可能性。

头文件

stdio.h

原型

int sprintf_s(char *buffer,size_t sizeOfBuffer,const char *format,

[argument] ...);

参数列表

buffer:char型指针,指向将要写入的字符串的缓冲区。

sizeOfBuffer:缓冲区大小。

format:格式化字符串。

[argument]...:可选参数,可以是任何类型的数据

相关参考:

(1)opencv学习---VideoCapture 类基础知识_hairuiJY的博客-CSDN博客_cv::videocapture

(2)c++中sprintf和sprintf_s的区别_奔跑的大茄子的博客-CSDN博客_c++ sprintf_s

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。