diff options
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}; +}; |