gpt4 book ai didi

c++ - 是否有能力倒回 VideoCapture 中的多个帧

转载 作者:太空宇宙 更新时间:2023-11-03 22:18:28 24 4
gpt4 key购买 nike

在特定条件下,我需要能够将视频倒回 10 帧。到目前为止,我有一个 VideoCapture cap,我从中提取帧以使用 cap >> frame 进行编辑和显示,其中 frame 的类型为 垫子(这是我所有剩余的框架编辑的基础。

我发现你可以倒带

int cvSetCaptureProperty( CvCapture* capture, int property_id, double value );

但问题是,这与我的 VideoCapture cap 不兼容,编译器说:

min.cpp:158:72: error: cannot convert ‘cv::VideoCapture’ to ‘CvCapture*’ for argument ‘1’ to ‘int cvSetCaptureProperty(CvCapture*, int, double)’
cvSetCaptureProperty(cap,CV_CAP_PROP_POS_FRAMES, i-TRCK_MRG);
^
min.cpp:159:37: error: cannot convert ‘cv::VideoCapture’ to ‘CvCapture*’ for argument ‘1’ to ‘IplImage* cvQueryFrame(CvCapture*)’
frame = cvQueryFrame(cap);

如果我使用 VideoCapture *cap 将帧捕获为 IplImage* frame,我的程序的其余部分也需要修改,除非我将帧转换回Mat 类型。

因此,是否可以在 VideoCapture 中回放多个帧?

最佳答案

cvSetCapturePropertyCvCaptureIplImage 来自已弃用的 C 接口(interface),除非绝对必要,否则不应使用。

但是您可以使用与 C++ 接口(interface)相同的函数,更准确地说是 this one .代码看起来像这样:

cv::VideoCapture cap("moviefile.mp4");

// read 200 frames
for (int i =0; i < 200; ++i)
cap.read();

// get the current position
auto pos = cap.get(cv::CV_CAP_PROP_POS_FRAMES);
// set the new position
cap.set(cv::CV_CAP_PROP_POS_FRAMES, pos-10);

我还没有尝试过这个,但我认为这是你最好的选择。使用实时摄像头而不是文件,我怀疑它根本无法工作。

关于c++ - 是否有能力倒回 VideoCapture 中的多个帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54339041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com