【发布时间】:2020-09-24 10:54:13
【问题描述】:
我有 mp4 视频,画完后我需要保存它。 我正在尝试使用
VideoWriter video("outcpp.avi", CV_FOURCC('M', 'J', 'P', 'G'), 10, Size(1280, 720));
但是保存后这个文件坏了。 完整代码(我使用的是 opencv 2.4.13):
#include <opencv2/opencv.hpp>
#include <iostream>
#include <fstream>
using namespace std;
using namespace cv;
Mat src;
void mouse_callback(int event, int x, int y, int, void*)
{
if (event == EVENT_LBUTTONDOWN)
{
rectangle(src, Point(x, y), Point(x+10, y+10), Scalar(0, 255, 0));
imshow("src", src);
}
}
int main(void)
{
CvCapture* cap = cvCreateFileCapture("1.mp4");
VideoWriter video("outcpp.avi", CV_FOURCC('M', 'J', 'P', 'G'), 10, Size(1280, 720));
while (1)
{
src = cvQueryFrame(cap);
namedWindow("src", WINDOW_AUTOSIZE);
imshow("src", src);
setMouseCallback("src", mouse_callback);
video.write(src);
waitKey(0);
}
return 0;
}
【问题讨论】:
-
当你说它坏了是什么意思?你如何尝试阅读它?此外,您不需要在每一帧上调用
setMouseCallback,只需使用namedWindow("src")创建“src”窗口并在进入循环之前设置鼠标回调。再说一句:你为什么要记录你正在阅读的同一帧?如果您想记录您绘制的矩形,请确保不是这种情况。 -
这段代码给了我
src = cvQueryFrame(cap)的错误,你没有使用videocapture()吗?这个 api 不是 c++ 吗?请编辑您的问题 -
@YunusTemurlenk 我不得不说它是 opencv 2.4.13
-
@antoine 我正在尝试打开保存的文件,但它显示错误,该文件已损坏。你的意思是我不能用这个来保存带有矩形的视频?
-
这与版本无关。您的 c++ 标签错误,您应该编辑问题