bool VideoCapture::read(Mat& image)
{
- if (get(CV_CAP_PROP_POS_FRAMES) < get(CV_CAP_PROP_FRAME_COUNT))
- if(!grab())
- image.release();
- else
- retrieve(image);
+ double frame_pos = get(CV_CAP_PROP_POS_FRAMES);
+ double frame_count = get(CV_CAP_PROP_FRAME_COUNT);
+ if (frame_pos < frame_count || frame_pos < 0 || frame_count < 0)
+ {
+ if(grab())
+ retrieve(image);
+ else
+ image.release();
+ }
else
image.release();
return !image.empty();
VideoCapture& VideoCapture::operator >> (Mat& image)
{
- if(!grab())
- image.release();
- else
- retrieve(image);
+ read(image);
return *this;
}