FIX: VideoCapture::read() was returning empty image for camera captures

pull/2/head
Alexander Mordvintsev 13 years ago
parent 37d9c3f835
commit 8429c109be
  1. 17
      modules/highgui/src/cap.cpp

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

Loading…
Cancel
Save