0

I tried to create a video from images on folder using opencv on C language. However, it didn't work. After few images it showed me an error of access violation of memory. Anyone can help me?

Here is my code:

#include <stdio.h>
#include <opencv2\highgui\highgui_c.h>

int main(void)
{
    int i = 1;
    char filename[100] = { 0 };

    cvNamedWindow("Test", 1);

    CvVideoWriter* writer = NULL;
    IplImage* img = cvLoadImage("<folder>\\1.png", 1);
    CvSize size = cvSize(0, 0);

    size.width = img->width;
    size.height = img->height;

    writer = cvCreateVideoWriter("Test.avi", CV_FOURCC('M', 'J', 'P', 'G'), 1, size, 1);

    if (!writer)
    {
        return -1;
    }

    while (img != NULL)
    {
        sprintf(filename, "<folder>\\%d.png", i);
        printf("%s\n", filename);
        img = cvLoadImage(filename, 1);
        if (img)
            cvWriteFrame(writer, img);
        i++;
    }

    cvReleaseVideoWriter(&writer);
    cvReleaseImage(&img);

    getchar();
    return 0;
}

Thanks for helping :)

Raz Omry
  • 255
  • 1
  • 6
  • 18
  • 2
    `img` should be released at the end of loop, not after the loop. `cvReleaseImage(&img);`. – sgarizvi Jun 19 '17 at 10:24
  • 1
    tip: use forward slashes for your `#include` directives. They will work on many systems, backslashes work only on windows. –  Jun 19 '17 at 10:27
  • Possible duplicate of [Writing AVI files in OpenCV](https://stackoverflow.com/questions/368967/writing-avi-files-in-opencv) – Vishwajeet Vishu Jun 19 '17 at 11:27

0 Answers0