gpt4 book ai didi

c++ - 为什么函数 'x' .write(frame) 对我不起作用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:51:21 25 4
gpt4 key购买 nike

当我在函数中使用:'x'.write(frame) 用于在 opencv 中写入视频文件时,程序传递代码并且我编译它没有错误但是当我打开文件时我看到它是 0 kb 并且播放器无法播放。有人可以帮助我吗?

这是我的代码:

    // Setup output video
cv::VideoWriter output_cap("output.avi",
CV_CAP_PROP_FOURCC,
CV_CAP_PROP_FPS,
cv::Size(1376, 768));


// Loop to read frames from the image and write it to the output capture
cv::Mat frame = imread("1.jpg", 0);
for(int hgf=1;hgf<=300;hgf++)
{

if (!frame.data)
{
break;
}

output_cap.write(frame);

}

大家好!

最佳答案

我认为主要问题是您的代码将错误的 FOURCC 值传递给 VideoWriterCV_CAP_PROP_FOURCC(#defined as 6)用于为 FOURCC 属性命名,但它不是正确的值。 CV_CAP_PROP_FPS(#defined 为 5)类似,但这里的效果只是告诉 VideoWriter 使用 5.0 fps。

这对我有用:

#include <stdio.h>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
if ( argc != 2 ) {
cout << "image required" << endl;
return -1;
}
Mat frame = imread(argv[1], 1);

VideoWriter output_cap("output.avi", CV_FOURCC('M','J','P','G'), 15,
frame.size());

for(int hgf=1; hgf<=300; hgf++) {
output_cap.write(frame);
}

return 0;
}

注意:根据我的经验,在 Linux 上,VideoWriter 对视频格式的支持一般。对于两种广泛使用的格式 M-JPEG(上面使用)和 H.264,M-JPEG 在 OpenCV 2.4 上运行良好,但在 3.X 和 H.264 上运行良好,与此 question 中的方式相同。对于 2.4 和 3.X。

关于c++ - 为什么函数 'x' .write(frame) 对我不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38921918/

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