diff --git a/modules/videoio/src/cap.cpp b/modules/videoio/src/cap.cpp index fa958e2c8f..648829c899 100644 --- a/modules/videoio/src/cap.cpp +++ b/modules/videoio/src/cap.cpp @@ -188,14 +188,25 @@ bool VideoCapture::open(const String& filename, int apiPreference, const std::ve else { CV_CAPTURE_LOG_DEBUG(NULL, - cv::format("VIDEOIO(%s): backend is not available " + cv::format("VIDEOIO(%s): backend is not available " "(plugin is missing, or can't be loaded due " "dependencies or it is not compatible)", - info.name)); + info.name)); } } } + if(apiPreference != CAP_ANY) + { + bool found = cv::videoio_registry::isBackendBuiltIn(static_cast(apiPreference)); + if (found) + { + CV_LOG_WARNING(NULL, cv::format("VIDEOIO(%s): backend is generally available " + "but can't be used to capture by name", + cv::videoio_registry::getBackendName(static_cast(apiPreference)).c_str())); + } + } + if (throwOnFail) { CV_Error_(Error::StsError, ("could not open '%s'", filename.c_str())); @@ -302,14 +313,25 @@ bool VideoCapture::open(int cameraNum, int apiPreference, const std::vector else { CV_CAPTURE_LOG_DEBUG(NULL, - cv::format("VIDEOIO(%s): backend is not available " + cv::format("VIDEOIO(%s): backend is not available " "(plugin is missing, or can't be loaded due " "dependencies or it is not compatible)", - info.name)); + info.name)); } } } + if(apiPreference != CAP_ANY) + { + bool found = cv::videoio_registry::isBackendBuiltIn(static_cast(apiPreference)); + if (found) + { + CV_LOG_WARNING(NULL, cv::format("VIDEOIO(%s): backend is generally available " + "but can't be used to capture by index", + cv::videoio_registry::getBackendName(static_cast(apiPreference)).c_str())); + } + } + if (throwOnFail) { CV_Error_(Error::StsError, ("could not open camera %d", cameraNum));