使用giflib将opencv mat编码为gif

时间:2015-04-15 14:25:10

标签: c++ opencv pixel gif mat

我尝试使用giflib将一些Mats编码为gif文件,但我无法使其工作。

以下是我如何将opencv mat的数据转换为gif像素:

cv::resize(input_mat, input_mat, cv::Size (160, 160));
cv::Mat mrgba(160, gif_size, CV_8UC4, cv::Scalar(0,0,0,0));
cv::cvtColor(input_mat, mrgba, CV_BGR2RGBA);
Byte * buffer = malloc( 160 * 160 *sizeof(Byte));
memcpy(buffer, mrgba.data, 160 * 160 *sizeof(Byte));

然后将缓冲区编码为gif文件。我的代码的另一部分是正确的,因为我可以使用它来编码我使用glReadPixel从OpenGL获得的像素缓冲区。我想OpenCV mat的数据结构可能有问题。

让我附上一张图片,告诉你我现在得到了什么:

enter image description here

1 个答案:

答案 0 :(得分:1)

正如@berak所说,我没有复制足够的字节。当前大小应

memcpy(buffer, mrgba.data, 160 * 160 *sizeof(Byte));