代码:
#include<opencv2/opencv.hpp> using namespace cv; #include<string> using namespace std; #include<thread> int main(){ //视频源 VideoCapture cap; cap.open(0);//来自摄像头 Mat src; cap >> src; VideoWriter writer; //写视频参数准备 string filename = "output.avi";//输出文件名 /* union { int value; char code[4]; } fourcc;//视频编码格式 fourcc.code[0] = ‘M‘; fourcc.code[1] = ‘J‘; fourcc.code[2] = ‘P‘; fourcc.code[3] = ‘G‘; */ int fourcc = static_cast<int>(VideoWriter::fourcc(‘P‘, ‘I‘, ‘M‘, ‘1‘)); double fps = 30;//每秒钟播放图像帧数 int delay = 1000 / fps; cv::Size size = cv::Size(cap.get(CV_CAP_PROP_FRAME_WIDTH), cap.get(CV_CAP_PROP_FRAME_HEIGHT));//视频图像尺寸 bool isColor = true;//是否是彩图 writer.open(filename, fourcc, fps, size, isColor); while (src.data){ writer << src; imshow("src", src); waitKey(delay); cap >> src; } return 0; }
保存的视频使用播放器播放,播放速度总是异常的快,但代码逻辑确实没错。网上搜索这个问题,发现别人也遇到了这个问题,但没有找到准确的解决方法。
时间: 2024-10-01 04:37:38