summaryrefslogtreecommitdiffhomepage
path: root/opentrack/opencv-calibration.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'opentrack/opencv-calibration.hpp')
-rw-r--r--opentrack/opencv-calibration.hpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/opentrack/opencv-calibration.hpp b/opentrack/opencv-calibration.hpp
new file mode 100644
index 00000000..6dee9908
--- /dev/null
+++ b/opentrack/opencv-calibration.hpp
@@ -0,0 +1,26 @@
+#pragma once
+#include <QCoreApplication>
+#include <QString>
+#include <QByteArray>
+#include <string>
+#include <opencv2/core.hpp>
+
+template<typename = void>
+bool get_camera_calibration(const QString& camera_name, cv::Mat& intrinsics, cv::Mat& distortion, int w, int h)
+{
+ QString pathname_ = QCoreApplication::applicationDirPath() + "/camera/" + camera_name + ".yml";
+ std::string pathname = pathname_.toStdString();
+ cv::FileStorage fs(pathname, cv::FileStorage::READ);
+ if (!fs.isOpened())
+ return false;
+ cv::Mat intrinsics_, distortion_;
+ fs["camera_matrix"] >> intrinsics_;
+ fs["distortion_coefficients"] >> distortion_;
+ intrinsics_.at<double>(0, 0) *= w / 640.;
+ intrinsics_.at<double>(2, 0) *= w / 640.;
+ intrinsics_.at<double>(1, 1) *= h / 480.;
+ intrinsics_.at<double>(2, 1) *= h / 480.;
+ intrinsics = intrinsics_;
+ distortion = distortion_;
+ return true;
+}