Как сохранить IplImage? - PullRequest
       4

Как сохранить IplImage?

8 голосов
/ 23 марта 2011

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

Ответы [ 2 ]

5 голосов
/ 23 марта 2011
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
1 голос
/ 23 марта 2011

Сохранить:

cvSaveImage(outFileName,img)

Если вы хотите проверить, что оно сохранено, вы можете сделать следующее:

  if(!cvSaveImage(outFileName,img)) printf("Could not save: %s\n",outFileName);

Взято из http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html#SECTION00052000000000000000 - лучший результат в Google для "opencv write iplimage".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...