diff --git a/modules/videoio/src/cap.cpp b/modules/videoio/src/cap.cpp index e36dc0573..30ec7ecc9 100644 --- a/modules/videoio/src/cap.cpp +++ b/modules/videoio/src/cap.cpp @@ -621,15 +621,15 @@ Ptr VideoCapture::createCameraCapture(int index) { #ifdef HAVE_DSHOW case CV_CAP_DSHOW: - capture = Ptr(new cv::VideoCapture_DShow(index)); - if (capture) + capture = makePtr(index); + if (capture && capture.dynamicCast()->isOpened()) return capture; break; // CV_CAP_DSHOW #endif #ifdef HAVE_INTELPERC case CV_CAP_INTELPERC: - capture = Ptr(new cv::VideoCapture_IntelPerC()); - if (capture) + capture = makePtr(); + if (capture && capture.dynamicCast()->isOpened()) return capture; break; // CV_CAP_INTEL_PERC #endif diff --git a/modules/videoio/src/cap_dshow.cpp b/modules/videoio/src/cap_dshow.cpp index bc9f05eb8..efbbd0866 100644 --- a/modules/videoio/src/cap_dshow.cpp +++ b/modules/videoio/src/cap_dshow.cpp @@ -1590,7 +1590,7 @@ bool videoInput::isFrameNew(int id){ bool videoInput::isDeviceSetup(int id){ - if(idreadyToCapture)return true; + if(id>=0 && idreadyToCapture)return true; else return false; }