繁体   English   中英

保存mp4视频opencv

[英]Save mp4 video opencv

我有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;
}

接缝一切都在使用VideoCapture 为什么使用 C 接口进行读取,使用 C++ 进行写入?

我只在等待键后移动video.write以捕获用户在视频中的点击。

int main(void)
{
    vector<Rect> trafficLights;

    VideoCapture cap("/Users/alex/Documents/my_projects/hahaton_cams/kfu2.mp4");
    VideoWriter video("outcpp.avi", CV_FOURCC('M', 'J', 'P', 'G'), 10, Size(1280, 720));
    while (cap.read(src)) {
        namedWindow("src", WINDOW_AUTOSIZE);
        imshow("src", src);
        setMouseCallback("src", mouse_callback);

        if (waitKey(0) == 'q')
            break;
        video.write(src); // to capture user clicks
    }

    return 0;
}

OpenCV 4.2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM