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

This commit is contained in:
Alexander Mordvintsev 2012-05-22 07:58:31 +00:00
parent 37d9c3f835
commit 8429c109be

View File

@ -494,11 +494,15 @@ bool VideoCapture::retrieve(Mat& image, int channel)
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();
@ -506,10 +510,7 @@ bool VideoCapture::read(Mat& image)
VideoCapture& VideoCapture::operator >> (Mat& image)
{
if(!grab())
image.release();
else
retrieve(image);
read(image);
return *this;
}