gpt4 book ai didi

c - 如何保存 IplImage?

转载 作者:太空狗 更新时间:2023-10-29 17:03:24 26 4
gpt4 key购买 nike

当我们有一个 IplImage ,我们如何保存它以便以后使用,或者在我们的代码之外将其作为图像查看(例如通过 png 或 jpeg)?

作为代码示例,我有以下内容:

void SaveImage()
{
CvSize size;
IplImage *rgb_img;
int i = 0;

size.height = HEIGHT;
size.width = WIDTH;

rgb_img = cvCreateImageHeader(size, IPL_DEPTH_8U, 3);
rgb_img->imageData = my_device.ColorBuffer;
rgb_img->imageDataOrigin = rgb_img->imageData;

/*for (i = 2; i < rgb_img->imageSize; i+= 3)
{
// confirming all values print correctly
printf("%d, ", rgb_img->imageData[i]);
}*/

cvSaveImage("foo.png",rgb_img);
}

我已经打印出注释掉的 for 循环中的所有值,数据似乎正确地位于缓冲区中。使用 cvShowImage 显示图像也可以正常工作,所以看起来图像的结构很好。

最佳答案

void SaveImage()
{
CvSize size;
IplImage *rgb_img;
int i = 0;

size.height = HEIGHT;
size.width = WIDTH;

rgb_img = cvCreateImageHeader(size, IPL_DEPTH_8U, 3);
rgb_img->imageData = my_device.ColorBuffer;

// You should NOT have the line below or OpenCV will try to deallocate your data
//rgb_img->imageDataOrigin = rgb_img->imageData;

for (i = 0; i < size.height; i++)
{
for (j = 0;j < size.width; j++)
{
// confirming all values print correctly
printf("%c, ", rgb_img->imageData[i*width + j]);
}
}

cvSaveImage("foo.png",rgb_img);
}

运行这个应该不会崩溃。

你的代码有一些问题

  • 您使用 %f 进行打印,但 IPL_DEPTH_8U 是 1 字节 uchar

关于c - 如何保存 IplImage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5410167/

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