From: Nikita Manovich Date: Wed, 10 Jul 2013 13:43:47 +0000 (+0400) Subject: Fixed VideoCapture::open() does not release previous capture sources (Bug #3150). X-Git-Tag: accepted/tizen/6.0/unified/20201030.111113~3851^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=21211308d0afec717f987b7d08bfa8fa391514a4;p=platform%2Fupstream%2Fopencv.git Fixed VideoCapture::open() does not release previous capture sources (Bug #3150). VideoCapture didn't call release method and just ignored the new capture sources. OpenCV documentation: bool VideoCapture::open(const string& filename); bool VideoCapture::open(int device); The methods first call VideoCapture::release() to close the already opened file or camera. --- diff --git a/modules/highgui/src/cap.cpp b/modules/highgui/src/cap.cpp index a76cb42..ac3d658 100644 --- a/modules/highgui/src/cap.cpp +++ b/modules/highgui/src/cap.cpp @@ -490,14 +490,14 @@ VideoCapture::~VideoCapture() bool VideoCapture::open(const String& filename) { - if (!isOpened()) + if (isOpened()) release(); cap = cvCreateFileCapture(filename.c_str()); return isOpened(); } bool VideoCapture::open(int device) { - if (!isOpened()) + if (isOpened()) release(); cap = cvCreateCameraCapture(device); return isOpened(); }