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.
Thank you for the reply 🙂
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
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,
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?
Sorry was busy with other stuffs. Can you let me know what problem you faced exactly ?
Very helpful! Thank you
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.
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
.tankssss
It’s my pleasure 🙂