summaryrefslogtreecommitdiffhomepage
path: root/video-opencv
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2023-01-23 13:52:08 +0100
committerStanislaw Halik <sthalik@misaki.pl>2023-01-23 14:16:35 +0100
commit386795a320f8c007186c41b0d10a4f4281a9c28c (patch)
tree87c69863c44b7ad1794636102fea0ccc47911b2b /video-opencv
parent45e48310779c8adec67de7cf76328aa7bd034466 (diff)
video/opencv, tracker/nn: add exposure presets
Diffstat (limited to 'video-opencv')
-rw-r--r--video-opencv/impl-camera.cpp17
-rw-r--r--video-opencv/impl.hpp3
-rw-r--r--video-opencv/settings.hpp13
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};
+};