Visual Servoing Platform
version 3.5.0 under development (2022-02-15)
|
#include <visp3/io/vpVideoReader.h>
Public Member Functions | |
vpVideoReader () | |
virtual | ~vpVideoReader () |
void | acquire (vpImage< vpRGBa > &I) |
void | acquire (vpImage< unsigned char > &I) |
void | close () |
bool | end () |
bool | getFrame (vpImage< vpRGBa > &I, long frame) |
bool | getFrame (vpImage< unsigned char > &I, long frame) |
double | getFramerate () |
long | getFrameIndex () const |
std::string | getFrameName () const |
long | getFirstFrameIndex () |
long | getLastFrameIndex () |
long | getFrameStep () const |
bool | isVideoFormat () const |
void | open (vpImage< vpRGBa > &I) |
void | open (vpImage< unsigned char > &I) |
vpVideoReader & | operator>> (vpImage< unsigned char > &I) |
vpVideoReader & | operator>> (vpImage< vpRGBa > &I) |
void | resetFrameCounter () |
void | setFileName (const std::string &filename) |
void | setFirstFrameIndex (const long first_frame) |
void | setLastFrameIndex (const long last_frame) |
void | setFrameStep (const long frame_step) |
Inherited functionalities from vpFramegrabber | |
unsigned int | getHeight () const |
unsigned int | getWidth () const |
Public Attributes | |
bool | init |
Protected Attributes | |
unsigned int | height |
unsigned int | width |
Class that enables to manipulate easily a video file or a sequence of images. As it inherits from the vpFrameGrabber Class, it can be used like an other frame grabber class.
This class has its own implementation to read a sequence of PGM and PPM images.
This class may benefit from optional 3rd parties:
The following example available in tutorial-video-reader.cpp shows how this class is really easy to use. It enables to read a video file named video.mpeg.
As shown in the next example, this class allows also to access to a specific frame. But be careful, for video files, the getFrame() method is not precise and returns the nearest intra key frame from the expected frame. You can use the getFrame() method to position the reader in the video and then use the acquire() method to get the following frames one by one.
The other following example explains how to use the class to read a sequence of images. The images are stored in the folder "./image" and are named "image0000.jpeg", "image0001.jpeg", "image0002.jpeg", ... As explained in setFirstFrameIndex() and setLastFrameIndex() it is also possible to set the first and last image numbers to read a portion of the sequence. If these two functions are not used, first and last image numbers are set automatically to match the first and image images of the sequence.
Note that it is also possible to access to a specific frame using getFrame().
Definition at line 171 of file vpVideoReader.h.
vpVideoReader::vpVideoReader | ( | ) |
Basic constructor.
Definition at line 57 of file vpVideoReader.cpp.
|
virtual |
Basic destructor.
Definition at line 70 of file vpVideoReader.cpp.
Grabs the current (k) image in the stack of frames and increments the frame counter in order to grab the next image (k+1) during the next use of the method. If open() was not called previously, this method opens the video reader.
This method enables to use the class as frame grabber.
I | : The image where the frame is stored. |
Implements vpFrameGrabber.
Definition at line 249 of file vpVideoReader.cpp.
References vpDiskGrabber::acquire(), vpImageConvert::convert(), vpDiskGrabber::getImageName(), vpDiskGrabber::getImageNumber(), open(), vpDiskGrabber::setImageNumber(), setLastFrameIndex(), and vpDiskGrabber::setStep().
Referenced by operator>>().
|
virtual |
Grabs the kth image in the stack of frames and increments the frame counter in order to grab the next image (k+1) during the next use of the method.
This method enables to use the class as frame grabber.
I | : The image where the frame is stored. |
Implements vpFrameGrabber.
Definition at line 334 of file vpVideoReader.cpp.
References vpDiskGrabber::acquire(), vpImageConvert::convert(), vpDiskGrabber::getImageName(), vpDiskGrabber::getImageNumber(), open(), vpDiskGrabber::setImageNumber(), and vpDiskGrabber::setStep().
|
inlinevirtual |
This virtual function is used to de-allocate the memory used by a specific frame grabber
Implements vpFrameGrabber.
Definition at line 256 of file vpVideoReader.h.
|
inline |
Definition at line 261 of file vpVideoReader.h.
|
inline |
Gets the first frame index.
Definition at line 308 of file vpVideoReader.h.
Gets the th frame and stores it in the image .
I | : The vpImage used to stored the frame. |
frame_index | : The index of the frame which has to be read. |
Definition at line 421 of file vpVideoReader.cpp.
References vpDiskGrabber::acquire(), vpImageConvert::convert(), vpImage< Type >::getHeight(), vpDiskGrabber::getImageNumber(), vpImage< Type >::getWidth(), vpFrameGrabber::height, vpDiskGrabber::setImageNumber(), setLastFrameIndex(), vpERROR_TRACE, and vpFrameGrabber::width.
Referenced by open().
bool vpVideoReader::getFrame | ( | vpImage< unsigned char > & | I, |
long | frame_index | ||
) |
Gets the th frame and stores it in the image .
I | : The vpImage used to stored the frame. |
frame_index | : The index of the frame which has to be read. |
Definition at line 491 of file vpVideoReader.cpp.
References vpDiskGrabber::acquire(), vpImageConvert::convert(), vpIoTools::getDirFiles(), vpImage< Type >::getHeight(), vpDiskGrabber::getImageNumber(), vpIoTools::getIndex(), vpIoTools::getName(), vpIoTools::getParent(), vpImage< Type >::getWidth(), vpFrameGrabber::height, vpException::notInitialized, vpDiskGrabber::setImageNumber(), setLastFrameIndex(), vpERROR_TRACE, and vpFrameGrabber::width.
|
inline |
Get the frame index of the current image. This index is updated at each call of the acquire method. It can be used to detect the end of a file (comparison with getLastFrameIndex()).
Definition at line 296 of file vpVideoReader.h.
|
inline |
Return the name of the file in which the last frame was read.
Definition at line 301 of file vpVideoReader.h.
|
inline |
Return the frame rate in Hz used to encode the video stream.
If the video is a sequence of images, return -1.
Definition at line 279 of file vpVideoReader.h.
|
inline |
Gets the frame step.
Definition at line 332 of file vpVideoReader.h.
References vpFrameGrabber::open().
|
inlineinherited |
Return the number of rows in the image.
Definition at line 114 of file vpFrameGrabber.h.
|
inline |
Gets the last frame index.
Definition at line 320 of file vpVideoReader.h.
|
inlineinherited |
Return the number of columns in the image.
Definition at line 116 of file vpFrameGrabber.h.
bool vpVideoReader::isVideoFormat | ( | ) | const |
Indicate if the video is an encoded single video file.
Definition at line 858 of file vpVideoReader.cpp.
Sets all the parameters needed to read the video or the image sequence.
Grab the first frame and stores it in the image .
I | : The image where the frame is stored. |
Implements vpFrameGrabber.
Definition at line 180 of file vpVideoReader.cpp.
References getFrame(), and vpException::ioError.
Referenced by acquire().
|
virtual |
Sets all the parameters needed to read the video or the image sequence.
Grab the first frame and stores it in the image .
I | : The image where the frame is stored. |
Implements vpFrameGrabber.
Definition at line 213 of file vpVideoReader.cpp.
References getFrame(), and vpException::ioError.
vpVideoReader & vpVideoReader::operator>> | ( | vpImage< unsigned char > & | I | ) |
Operator that allows to capture a grey level image.
I | : The captured image. |
Definition at line 797 of file vpVideoReader.cpp.
References acquire().
vpVideoReader & vpVideoReader::operator>> | ( | vpImage< vpRGBa > & | I | ) |
Operator that allows to capture a grey level image.
I | : The captured image. |
Definition at line 826 of file vpVideoReader.cpp.
References acquire().
|
inline |
Reset the frame counter and sets it to the first image index.
By default the first frame index is set to 0.
This method is useful if you use the class like a frame grabber (ie with theacquire method).
Definition at line 349 of file vpVideoReader.h.
void vpVideoReader::setFileName | ( | const std::string & | filename | ) |
It enables to set the path and the name of the video which has to be read.
If you want to read a video file, filename
corresponds to the path to the file (e.g.: /local/video.mpeg
).
If you want to read a sequence of images, filename
corresponds rather to the path followed by the image name template. For example, if you want to read different images named image0001.jpeg
, image0002.jpg
... and located in the folder /local/image
, filename
will be /local/image/image%04d.jpg
.
filename | : Path to a video file or file name template of a image sequence. |
Definition at line 92 of file vpVideoReader.cpp.
References vpException::badValue, vpException::fatalError, vpIoTools::getName(), vpFrameGrabber::height, vpException::ioError, vpImageException::noFileNameError, vpDiskGrabber::setGenericName(), vpDiskGrabber::setImageNumber(), vpDiskGrabber::setStep(), and vpFrameGrabber::width.
|
inline |
Enables to set the first frame index if you want to use the class like a grabber (ie with the acquire method).
first_frame | : The first frame index. |
Definition at line 359 of file vpVideoReader.h.
|
inline |
Sets the frame step index. The default frame step is 1
frame_step | : The frame index step. |
Definition at line 385 of file vpVideoReader.h.
|
inline |
Enables to set the last frame index.
last_frame | : The last frame index. |
Definition at line 371 of file vpVideoReader.h.
Referenced by acquire(), and getFrame().
|
protectedinherited |
Number of rows in the image.
Definition at line 107 of file vpFrameGrabber.h.
Referenced by vpPylonGrabberGigE::acquire(), vpPylonGrabberUsb::acquire(), vpDiskGrabber::acquire(), vpFlyCaptureGrabber::acquire(), vpV4l2Grabber::acquire(), vp1394TwoGrabber::acquire(), vpV4l2Grabber::close(), vp1394TwoGrabber::dequeue(), getFrame(), vp1394TwoGrabber::getHeight(), vpDiskGrabber::open(), vpV4l2Grabber::open(), vp1394CMUGrabber::open(), vp1394CMUGrabber::selectCamera(), setFileName(), vp1394TwoGrabber::setFormat7ROI(), vp1394CMUGrabber::setVideoMode(), vp1394TwoGrabber::setVideoMode(), vp1394CMUGrabber::vp1394CMUGrabber(), and vp1394TwoGrabber::vp1394TwoGrabber().
|
inherited |
Set to true if the frame grabber has been initialized.
Definition at line 104 of file vpFrameGrabber.h.
Referenced by vpV4l2Grabber::acquire(), vp1394CMUGrabber::close(), vp1394TwoGrabber::close(), vpPylonGrabberGigE::connect(), vpPylonGrabberUsb::connect(), vpFlyCaptureGrabber::connect(), vpPylonGrabberGigE::disconnect(), vpPylonGrabberUsb::disconnect(), vpFlyCaptureGrabber::disconnect(), vpDiskGrabber::open(), vpV4l2Grabber::open(), vp1394TwoGrabber::resetBus(), vp1394CMUGrabber::selectCamera(), vp1394TwoGrabber::setFormat7ROI(), vpPylonGrabberUsb::startCapture(), vpPylonGrabberGigE::startCapture(), vpFlyCaptureGrabber::startCapture(), vpPylonGrabberGigE::stopCapture(), vpPylonGrabberUsb::stopCapture(), vpFlyCaptureGrabber::stopCapture(), vp1394CMUGrabber::vp1394CMUGrabber(), vp1394TwoGrabber::vp1394TwoGrabber(), vpDiskGrabber::vpDiskGrabber(), and vpV4l2Grabber::vpV4l2Grabber().
|
protectedinherited |
Number of columns in the image.
Definition at line 108 of file vpFrameGrabber.h.
Referenced by vpPylonGrabberGigE::acquire(), vpPylonGrabberUsb::acquire(), vpDiskGrabber::acquire(), vpFlyCaptureGrabber::acquire(), vpV4l2Grabber::acquire(), vp1394TwoGrabber::acquire(), vpV4l2Grabber::close(), vp1394TwoGrabber::dequeue(), getFrame(), vp1394TwoGrabber::getWidth(), vpDiskGrabber::open(), vpV4l2Grabber::open(), vp1394CMUGrabber::open(), vp1394CMUGrabber::selectCamera(), setFileName(), vp1394TwoGrabber::setFormat7ROI(), vp1394CMUGrabber::setVideoMode(), vp1394TwoGrabber::setVideoMode(), vp1394CMUGrabber::vp1394CMUGrabber(), and vp1394TwoGrabber::vp1394TwoGrabber().