Когда у нас есть 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 для отображения изображения также работает правильно, поэтому кажется, что структура изображения в порядке.