Unable to create video with CV_FOURCC('Y','U','Y','V')
Hi,
I am working on opencv version 2.4.8 under Ubuntu 12.04 LTS environment.
I am facing problem while creating a video ,while capturing from a webcam (UVC compatible).
It is giving error
"Could not create video."
Here is my code:
// Include standard OpenCV headers
#include <iostream>
#include <opencv/cv.h>
#include <opencv/highgui.h>
using namespace std;
// All the new API is put into "cv" namespace
using namespace cv;
int main (int argc, char *argv[])
{
// Open the default camera
VideoCapture capture(0);
// Check if the camera was opened
if(!capture.isOpened())
{
cerr << "Could not create capture";
return -1;
}
// Get the properties from the camera
double width = capture.get(CV_CAP_PROP_FRAME_WIDTH);
double height = capture.get(CV_CAP_PROP_FRAME_HEIGHT);
cout << "Camera properties\n";
cout << "width = " << width << endl <<"height = "<< height << endl;
// Create a matrix to keep the retrieved frame
Mat frame;
// Create a window to show the image
namedWindow ("Capture", CV_WINDOW_AUTOSIZE);
// Create the video writer
VideoWriter video("capture.avi", CV_FOURCC('Y', 'U', 'Y', 'V'), 30, cvSize((int)width,(int)height));
//video.open("capture.avi", -1, 30, cvSize((int)width,(int)height));
// Check if the video was opened
if(!video.isOpened())
{
cerr << "Could not create video.";
return -1;
}
cout << "Press Esc to stop recording." << endl;
// Get the next frame until the user presses the escape key
while(true)
{
// Get frame from capture
capture >> frame;
// Check if the frame was retrieved
if(!frame.data)
{
cerr << "Could not retrieve frame.";
return -1;
}
// Save frame to video
video << frame;
// Show image
imshow("Capture", frame);
// Exit with escape key
if(waitKey(1) == 27)
break;
}
// Exit
return 0;
}
The information about camera is as follows.
$ v4l2-ctl --all
Driver Info (not using libv4l2):
Driver name : uvcvideo
Card type : USB2.0 Camera
Bus info : usb-0000:00:1d.0-1.5
Driver version: 3.2.40
Capabilities : 0x04000001
Video Capture
Streaming
Video input : 0 (Camera 1: ok)
Format Video Capture:
Width/Height : 640/480
Pixel Format : 'YUYV'
Field : None
Bytes per Line: 1280
Size Image : 1045178410
Colorspace : SRGB
Crop Capability Video Capture:
Bounds : Left 0, Top 0, Width 640, Height 480
Default : Left 0, Top 0, Width 640, Height 480
Pixel Aspect: 1/1
Streaming Parameters Video Capture:
Capabilities : timeperframe
Frames per second: 0.004 (1381/377737)
Read buffers : 0
brightness (int) : min=-127 max=127 step=1 default=0 value=0
contrast (int) : min=0 max=127 step=1 default=64 value=64
saturation (int) : min=0 max=255 step=1 default=64 value=64
hue (int) : min=-16000 max=16000 step=1 default=0 value=0
gamma (int) : min=16 max=500 step=1 default=100 value=100
power_line_frequency (menu) : min=0 max=2 default=1 value=1
sharpness (int) : min=1 max=29 step=1 default=9 value=9
backlight_compensation (int) : min=0 max=1 step=1 default=0 value=0
Please help me how to solve this problem ..
I find it quite weird you are including old C - API headers but you are programming in the new C++ API. I suggest changing the opencv in your includes to opencv2 first and see if it gets solved.
Well i changed the includes from opencv to opencv2 , but still problem is not solved.