1、“+”: 不能添加两个指针 。
2、且表达式必须具有整数或未区分范围的枚举类型。
源码如下:
int i=0;
sprintf_s(image_name, "%s%d%s", "image", i, ".jpg");
cv::imwrite("C:\\Users\\admin\\Desktop\\newimages\\" +image_name, frame);
这两个错误,是因为:
1、字符串常量就是指针,C++用指针表达字符串常量。
2、i是int类型的,而其他“image”和“.jpg”是string类型的,类型相同才能相加。
如下修改就好了:
int i=0;
sprintf_s(image_name, "%s%d%s", "image", i, ".jpg");
std::string str(image_name);
cv::imwrite("C:\\Users\\admin\\Desktop\\newimages\\" +image_name, frame);
整体源码是opencv截取视频帧并保存为图片。
#include <stdio.h>
#include <string>
#include <iostream>
#include <io.h>
#include <fstream>
#include <vector>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
VideoCapture capture("C:\\Users\\admin\\Desktop\\1.mp4");
int i = 0;
//std::string image_name;
char image_name[20];
while (1)
{
Mat frame;
capture >> frame;
imshow("dqsp", frame);
//转换格式
sprintf_s(image_name, "%s%d%s", "image", i, ".jpg");
std::string str(image_name);
cv::imwrite("C:\\Users\\admin\\Desktop\\newimages\\" +image_name, frame);
waitKey(30);
i++;
}
return 0;
}