mirror of
https://github.com/opencv/opencv.git
synced 2026-07-31 00:03:03 +04:00
videoio: add routines to query information about backends API
into cv::videoio_registry namespace
This commit is contained in:
@@ -6,6 +6,8 @@
|
||||
|
||||
#include "videoio_registry.hpp"
|
||||
|
||||
#include "opencv2/videoio/registry.hpp"
|
||||
|
||||
#include "cap_intelperc.hpp"
|
||||
#include "cap_dshow.hpp"
|
||||
|
||||
@@ -247,6 +249,8 @@ public:
|
||||
return g_instance;
|
||||
}
|
||||
|
||||
inline std::vector<VideoBackendInfo> getEnabledBackends() const { return enabledBackends; }
|
||||
|
||||
inline std::vector<VideoBackendInfo> getAvailableBackends_CaptureByIndex() const
|
||||
{
|
||||
std::vector<VideoBackendInfo> result;
|
||||
@@ -302,6 +306,58 @@ std::vector<VideoBackendInfo> getAvailableBackends_Writer()
|
||||
return result;
|
||||
}
|
||||
|
||||
cv::String getBackendName(VideoCaptureAPIs api)
|
||||
{
|
||||
if (api == CAP_ANY)
|
||||
return "CAP_ANY"; // special case, not a part of backends list
|
||||
const int N = sizeof(builtin_backends)/sizeof(builtin_backends[0]);
|
||||
for (size_t i = 0; i < N; i++)
|
||||
{
|
||||
const VideoBackendInfo& backend = builtin_backends[i];
|
||||
if (backend.id == api)
|
||||
return backend.name;
|
||||
}
|
||||
return cv::format("UnknownVideoAPI(%d)", (int)api);
|
||||
}
|
||||
|
||||
std::vector<VideoCaptureAPIs> getBackends()
|
||||
{
|
||||
std::vector<VideoBackendInfo> backends = VideoBackendRegistry::getInstance().getEnabledBackends();
|
||||
std::vector<VideoCaptureAPIs> result;
|
||||
for (size_t i = 0; i < backends.size(); i++)
|
||||
result.push_back((VideoCaptureAPIs)backends[i].id);
|
||||
return result;
|
||||
}
|
||||
|
||||
std::vector<VideoCaptureAPIs> getCameraBackends()
|
||||
{
|
||||
const std::vector<VideoBackendInfo> backends = VideoBackendRegistry::getInstance().getAvailableBackends_CaptureByIndex();
|
||||
std::vector<VideoCaptureAPIs> result;
|
||||
for (size_t i = 0; i < backends.size(); i++)
|
||||
result.push_back((VideoCaptureAPIs)backends[i].id);
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
std::vector<VideoCaptureAPIs> getStreamBackends()
|
||||
{
|
||||
const std::vector<VideoBackendInfo> backends = VideoBackendRegistry::getInstance().getAvailableBackends_CaptureByFilename();
|
||||
std::vector<VideoCaptureAPIs> result;
|
||||
for (size_t i = 0; i < backends.size(); i++)
|
||||
result.push_back((VideoCaptureAPIs)backends[i].id);
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
std::vector<VideoCaptureAPIs> getWriterBackends()
|
||||
{
|
||||
const std::vector<VideoBackendInfo> backends = VideoBackendRegistry::getInstance().getAvailableBackends_Writer();
|
||||
std::vector<VideoCaptureAPIs> result;
|
||||
for (size_t i = 0; i < backends.size(); i++)
|
||||
result.push_back((VideoCaptureAPIs)backends[i].id);
|
||||
return result;
|
||||
}
|
||||
|
||||
} // namespace registry
|
||||
|
||||
#define TRY_OPEN(backend_func) \
|
||||
|
||||
Reference in New Issue
Block a user