gpt4 book ai didi

opencv - 如何通过OpenCV用序列图像制作视频

转载 作者:行者123 更新时间:2023-12-02 17:42:56 25 4
gpt4 key购买 nike

我正在做一个提取视频帧并将其重新制作为视频的小项目。
如何使序列图像重新回到视频?

这是我提取视频帧代码的一部分。

if (n_frame % 3 == 0)
{
//Save an image
sprintf(filename, "frame%.3d.jpg", n_save++);
imwrite(filename, frame);
cout << "save: " << filename << endl;

}

我将图片命名为frame000,frame001,frame002 ....等等。

我正在使用opencv 2.4.11。

非常感谢!

最佳答案

您使用了FFmpegFrameRecorder
字符串路径= Environment.getExternalStorageDirectory()。getPath()+“/ Video_images”;

        File folder = new File(path);

File[] listOfFiles = folder.listFiles();

if (listOfFiles.length > 0) {

iplimage = new opencv_core.IplImage[listOfFiles.length];

for (int j = 0; j < listOfFiles.length; j++) {

String files = "";

if (listOfFiles[j].isFile()) {
files = listOfFiles[j].getName();
System.out.println(" j " + j + listOfFiles[j]);
}

String[] tokens = files.split("\\.(?=[^\\.]+$)");
String name = tokens[0];

iplimage[j] = cvLoadImage(Environment.getExternalStorageDirectory().getPath() + "/Video_images/" + name + ".jpg");

}

记录器=新的FFmpegFrameRecorder(Constn.SS,480,480);
        try {
recorder.setVideoCodec(13);
recorder.setFrameRate(0.4d);
recorder.setPixelFormat(0);
recorder.setVideoQuality(1.0d);
recorder.setVideoBitrate(4000);
startTime = System.currentTimeMillis();
recorder.start();
int time = Integer.parseInt(params[0]);
resp = "Slept for " + time + " milliseconds";
for (int i = 0; i < iplimage.length; i++) {
long t = 1000 * (System.currentTimeMillis() - startTime);
if (t < recorder.getTimestamp()) {
t = recorder.getTimestamp() + 1000;
}
recorder.setTimestamp(t);
recorder.record(iplimage[i]);
}
} catch (Exception e) {
e.printStackTrace();
}

关于opencv - 如何通过OpenCV用序列图像制作视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42272266/

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