gpt4 book ai didi

c++ - OpenCV VideoWriter 创建空文件

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

我对 OpenCV VideoWriter 有疑问。

目前我有 2 个项目:一个在 C# 中,一个在 C++ 中。

C# 项目会读取*.bmp 文件,创建位图列表,然后在C++ 项目中调用writeVideo 函数。

在 C++ 项目中,我使用带有 MJPG 编解码器的 VideoWriter,从位图列表中一张一张地读取位图,转换为 mat,添加到 cv::VideoWriter 对象,然后使用 video.release()。

所有 *.bmp 文件都是 101x76。

当文件夹有 53 个文件时有效。否则,当文件夹少于53个文件时,它不起作用(无法打开输出文件)。

这是我的代码:

int s = bmList->Count;
int w = bmList[0]->Width;
int h = bmList[0]->Height;

cv::VideoWriter video(msclr::interop::marshal_as<std::string>(path), CV_FOURCC('M','J','P','G'), 10, cv::Size(w, h));
for (int i = 0; i < s; i++){
IplImage* temp;

System::Drawing::Imaging::BitmapData^ bitmapData = bmList[i]->LockBits(System::Drawing::Rectangle(0, 0, w, h), System::Drawing::Imaging::ImageLockMode::ReadWrite, bmList[i]->PixelFormat);

temp = cvCreateImage(cvSize(w, h), IPL_DEPTH_8U, 4);
temp->imageData = (char*)bitmapData->Scan0.ToPointer();

bmList[i]->UnlockBits(bitmapData);

cv::Mat mat = cv::Mat();

cv::cvtColor(cv::Mat(temp), mat, CV_BGRA2BGR);

video << mat;
}

video.release();

你知道这个问题吗?请帮我!谢谢。

最佳答案

我在这里发现了同样的问题:mjpeg @ 0x27ee9e0 buffer smaller than minimum size: How to create a video file with size less than the minimum buffer size?

这意味着输入缓冲区小于最小大小。我将 OpenCV 升级到 3.1.0,它运行良好。

谢谢大家的支持!

关于c++ - OpenCV VideoWriter 创建空文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48919582/

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