OpenCV Code to save image

This little code-snippet saves image from live video stream (web-camera). Compile the code and hit “s” without qutoes to save the image. The last image which was grabbed by the OpenCV is saved.

The code was tested in Linux (Ubuntu 10.10) and should work on other platforms as well. The only place to be changed is the file path for saving images.

#include "cv.h";
#include "highgui.h"

int main(int argc,char** argv)
{
char path[255];

// For Linux, path to save the captured image
strcpy(path,"/home/samundra/sample.jpg");

// For Windows, path to save the captured image
// strcpy(path,"c:\\home.jpg");

// Pointer to current frame
IplImage *frame;

//Resize image to small size
IplImage *small;

// Create capture device ready
// here 0 indicates that we want to use camera at 0th index
CvCapture *capture = cvCaptureFromCAM(0);

// highgui.h is required
cvNamedWindow("capture",CV_WINDOW_AUTOSIZE);

frame = cvQueryFrame(capture);

// Must be initialized before actually cvResize is used
// we are creating image of size that is half of the original frame captured
// 8 = Bits 3 = Channel
small = cvCreateImage(cvSize(frame->width/2,frame->height/2), 8, 3);

while(1)
{
// Query for Frame From Camera
frame = cvQueryFrame(capture);

// Resize the grabbed frame

cvResize(frame, small); //cvResize(source, destination)

// Display the captured image
cvShowImage("capture", small);

char ch = cvWaitKey(25); // Wait for 25 ms for user to hit any key
if(ch==27) break; // If Escape Key was hit just exit the loop

// Save image if s was keyboard
if(ch=='s')
{
cvSaveImage(path,small);
}
}

// Release All Images and Windows
cvReleaseImage(&frame);
cvReleaseImage(&small);
cvDestroyWindow("capture");
return 0;
}

Hope this code is helpful for someone and usually the beginners in opencv.

10 Replies to “OpenCV Code to save image”

  1. I have run this program on windows platform using visual studio
    It is giving error as
    “Unhandled exception at 0x00295ba6 in captureimage.exe: 0xC0000005: Access violation reading location 0x0000002c.”

    Capture image is name of my project in visual studio

    1. I used linux for development purpose and thus can’t help much on visual studio. But it could possibly be that during setup of the development machine or visual studio some configurations might have slipped away. Please refer to Ashish Kumawat tutorial to setup visual studio and see if that works for you or not.

      Thanks,

  2. Great help live feed showing perfectly, however i can’t seem to get the image to save.
    strcpy(path,”C:\test.jpg”);

    ………
    char ch = cvWaitKey(25); // Wait for 25 ms for user to hit any key
    if(ch==27) break; // If Escape Key was hit just exit the loop

    // Save image if s was keyboard
    if(ch==’s’)
    {
    cvSaveImage(path,small);
    }

    any ideas?

  3. Please add steps to compile this code. Being a beginner, its very difficult to compile this program as its give an error
    “cv.h: No such file or directory”
    “highgui.h: No such file or directory” etc

    After adding these files, it gave more errors from these files.

    So, please make it more easier for the beginners like me.

    1. Hello Skg,

      The above code was supposed to be taken as code snippet. I know for begineers its really very annoying to get started with OpenCV. I assume you have already installed OpenCV in your computer and its in Linux.

      Since, You have asked for instruction to compile, I will shortly list that out here. I am in Ubuntu11.10 (Linux Platform) and I have kept this code
      alias gcv="g++ -I/usr/include/opencv -lcv -lcxcore -lcvaux -lhighgui -lm"
      in my terminal environment. So to compile the above code I just have to use gcv saveimage.cpp -o saveimage

      and then to run the executable file I will use $ ./saveimage.

Comments are closed.