Apuntes Opencv
Apuntes Opencv
Apuntes Opencv
t is same as capturing from Camera, just change camera index with video file
name. Also while displaying the frame, use appropriate time for cv2.waitKey().
If it is too less, video will be very fast and if it is too high, video will be slow
(Well, that is how you can display videos in slow motion). 25 milliseconds will
be OK in normal cases.
import numpy as np
import cv2
cap = cv2.VideoCapture('vtest.avi')
while(cap.isOpened()):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
VideoCapture::open
Python: cv2.VideoCapture.open(filename)
The methods first call VideoCapture::release() to close the already opened file or
camera.
Python: cv2.VideoCapture.isOpened() retval
Returns true if video capturing has been initialized already. If the previous call
to VideoCapture constructor or VideoCapture::open succeeded, the method
returns true.
Python: cv2.VideoCapture.release() None
The methods/functions grab the next frame from video file or camera and return true (nonzero) in the case of success.
The primary use of the function is in multi-camera environments, especially when the
cameras do not have hardware synchronization. That is, you call VideoCapture::grab()
for each camera and after that call the slower method VideoCapture::retrieve() to
decode and get frame from each camera. This way the overhead on demosaicing or motion
jpeg decompression etc. is eliminated and the retrieved frames from different cameras will
be closer in time.
Also, when a connected camera is multi-head (for example, a stereo camera or a Kinect
device), the correct way of retrieving data from it is to call VideoCapture::grab first and
then call VideoCapture::retrieve() one or more times with different values of the
channel parameter. See
https://github.com/Itseez/opencv/tree/master/samples/cpp/openni_capture.cpp
VideoCapture::retrieve
The methods/functions decode and return the just grabbed frame. If no frames has been
grabbed (camera has been disconnected, or there are no more frames in video file), the
methods return false and the functions return NULL pointer.
Note
OpenCV 1.x functions cvRetrieveFrame and cv.RetrieveFrame return image stored
inside the video capturing structure. It is not allowed to modify or release the image! You
can copy the frame using cvCloneImage() and then do whatever you want with the copy.
VideoCapture::read
VideoCapture::get
Returns the specified VideoCapture property
C++: double VideoCapture::get(int propId)
Python: cv2.VideoCapture.get(propId) retval
C: double cvGetCaptureProperty(CvCapture* capture, int property_id)
Python: cv.GetCaptureProperty(capture, property_id) float
Parameters: propId
Property identifier. It can be one of the following:
video stream.
Note: When querying a property that is not supported by the backend used by the
VideoCapture class, value 0 is returned.
VideoCapture::set
Sets a property in the VideoCapture.
C++: bool VideoCapture::set(int propId, double value)
Python: cv2.VideoCapture.set(propId, value) retval
C: int cvSetCaptureProperty(CvCapture* capture, int property_id, double value)
Python: cv.SetCaptureProperty(capture, property_id, value) retval
Parameters:
propId
Property identifier. It can be one of the following:
VideoWriter
class VideoWriter
Video writer class.
VideoWriter::VideoWriter
VideoWriter constructors
Parameters:
isColor If it is not zero, the encoder will expect and encode color
frames, otherwise it will work with grayscale frames (the flag is
currently supported on Windows only).
ReleaseVideoWriter
Releases the AVI writer.
C: void cvReleaseVideoWriter(CvVideoWriter** writer)
The function should be called after you finished using CvVideoWriter opened with
CreateVideoWriter().
VideoWriter::open
Initializes or reinitializes video writer.
C++: bool VideoWriter::open(const string& filename, int fourcc, double fps, Size
frameSize, bool isColor=true)
Python: cv2.VideoWriter.open(filename, fourcc, fps, frameSize[, isColor]) retval
The method opens video writer. Parameters are the same as in the constructor
VideoWriter::VideoWriter().
VideoWriter::isOpened
Returns true if video writer has been successfully initialized.
C++: bool VideoWriter::isOpened()
Python: cv2.VideoWriter.isOpened() retval
VideoWriter::write
Writes the next video frame
C++: VideoWriter& VideoWriter::operator<<(const Mat& image)
C++: void VideoWriter::write(const Mat& image)
Python: cv2.VideoWriter.write(image) None
C: int cvWriteFrame(CvVideoWriter* writer, const IplImage* image)
Python: cv.WriteFrame(writer, image) int
Parameters:
The functions/methods write the specified image to video file. It must have the same size as
has been specified when opening the video writer.