diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2023-01-23 13:52:08 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2023-01-23 14:16:35 +0100 |
commit | 386795a320f8c007186c41b0d10a4f4281a9c28c (patch) | |
tree | 87c69863c44b7ad1794636102fea0ccc47911b2b /video-opencv | |
parent | 45e48310779c8adec67de7cf76328aa7bd034466 (diff) |
video/opencv, tracker/nn: add exposure presets
Diffstat (limited to 'video-opencv')
-rw-r--r-- | video-opencv/impl-camera.cpp | 17 | ||||
-rw-r--r-- | video-opencv/impl.hpp | 3 | ||||
-rw-r--r-- | video-opencv/settings.hpp | 13 |
3 files changed, 27 insertions, 6 deletions
diff --git a/video-opencv/impl-camera.cpp b/video-opencv/impl-camera.cpp index 543f9dff..9e749d75 100644 --- a/video-opencv/impl-camera.cpp +++ b/video-opencv/impl-camera.cpp @@ -47,12 +47,17 @@ bool cam::start(info& args) if (args.use_mjpeg) cap->set(cv::CAP_PROP_FOURCC, cv::VideoWriter::fourcc('M', 'J', 'P', 'G')); -#if 1 - cap->set(cv::CAP_PROP_AUTO_EXPOSURE, 0); - //cap->set(cv::CAP_PROP_SHARPNESS, 0); - if (auto exp = cap->get(cv::CAP_PROP_EXPOSURE); exp > -4 || exp < -5) - cap->set(cv::CAP_PROP_EXPOSURE, -5); -#endif + if (s.exposure_preset != exposure_preset::ignored) + { + cap->set(cv::CAP_PROP_AUTO_EXPOSURE, 0); + //cap->set(cv::CAP_PROP_SHARPNESS, 0); + switch (s.exposure_preset) + { + case exposure_preset::near: cap->set(cv::CAP_PROP_EXPOSURE, -5); break; + case exposure_preset::far: cap->set(cv::CAP_PROP_EXPOSURE, -4); break; + default: break; + } + } if (!cap->isOpened()) goto fail; diff --git a/video-opencv/impl.hpp b/video-opencv/impl.hpp index ed5499b0..88ae069d 100644 --- a/video-opencv/impl.hpp +++ b/video-opencv/impl.hpp @@ -8,6 +8,7 @@ #pragma once #include "video/camera.hpp" +#include "settings.hpp" #include <optional> #include <opencv2/videoio.hpp> @@ -46,6 +47,8 @@ static constexpr int video_capture_backend = bool get_frame_(); + dshow_camera_settings s; + std::optional<cv::VideoCapture> cap; cv::Mat mat; frame frame_; diff --git a/video-opencv/settings.hpp b/video-opencv/settings.hpp new file mode 100644 index 00000000..69fb5705 --- /dev/null +++ b/video-opencv/settings.hpp @@ -0,0 +1,13 @@ +#pragma once +#include "options/value.hpp" +using namespace options; + +enum class exposure_preset : int { + near, far, ignored, + DEFAULT = near, +}; + +struct dshow_camera_settings final { + bundle b = make_bundle("video-camera"); + value<exposure_preset> exposure_preset{b, "exposure-preset", exposure_preset::near}; +}; |