Resurgence (PY2022)
Codebase for the Husky Robotics 2021-2022 rover Resurgence
Loading...
Searching...
No Matches
Camera.h
1#pragma once
2
3#include "../world_interface/data.h"
4#include "CameraParams.h"
5
6#include <memory>
7#include <mutex>
8#include <string>
9#include <thread>
10
11#include <opencv2/core.hpp>
12#include <opencv2/videoio.hpp>
13
22
27namespace cam {
28
33
63class Camera {
64private:
69 std::string _name;
70 std::string _description;
72 std::shared_ptr<std::mutex> _capture_lock;
74 CameraParams _intrinsic_params;
75 cv::Mat _extrinsic_params;
76 std::shared_ptr<bool> _running;
77 void captureLoop();
78 void init(const cv::Mat& extrinsic_params);
79
80public:
89 Camera();
98 bool open(robot::types::CameraID camera_id, CameraParams intrinsic_params = CameraParams(),
99 cv::Mat extrinsic_params = cv::Mat());
114 Camera(robot::types::CameraID camera_id, std::string name, std::string description = "",
115 CameraParams intrinsic_params = CameraParams(),
116 cv::Mat extrinsic_params = cv::Mat());
124 Camera(const Camera& other);
135 bool isOpen() const;
146 bool hasNext(uint32_t last_frame_num) const;
158 bool next(cv::Mat& frame, uint32_t& frame_num) const;
170 bool next(cv::Mat& frame, uint32_t& frame_num, robot::types::datatime_t& frame_time) const;
174 bool hasIntrinsicParams() const;
178 bool hasExtrinsicParams() const;
198 std::string getName() const;
203 void setName(std::string new_name);
208 void setDescription(std::string new_description);
209};
210
212} // namespace cam
_GLIBCXX_END_NAMESPACE_CXX11 typedef basic_string< char > string
Represents a set of intrinsic camera parameters.
Definition CameraParams.h:60
Camera(robot::types::CameraID camera_id, std::string name, std::string description="", CameraParams intrinsic_params=CameraParams(), cv::Mat extrinsic_params=cv::Mat())
Constructs a Camera that will open the camera with the given ID and have the given name and descripti...
std::string getName() const
Returns the name of the camera.
Definition Camera.cpp:166
void setName(std::string new_name)
Updates the name of the camera to the given name.
Definition Camera.cpp:174
bool isOpen() const
Returns true if the camera is open.
Definition Camera.cpp:115
Camera()
Constructs an "empty" Camera.
Definition Camera.cpp:14
void setDescription(std::string new_description)
Updates the description of the camera to the given description.
Definition Camera.cpp:178
bool hasIntrinsicParams() const
Returns true if this camera has associated intrinsic parameters.
Definition Camera.cpp:150
bool next(cv::Mat &frame, uint32_t &frame_num) const
Retrieves the next frame.
Definition Camera.cpp:127
std::string getGSTPipe(robot::types::CameraID camera_id)
Creates a GStreamer Pipeline using the configuration file associated with the given camera ID.
Definition Camera.cpp:71
bool open(robot::types::CameraID camera_id, CameraParams intrinsic_params=CameraParams(), cv::Mat extrinsic_params=cv::Mat())
Opens a Camera that is not already open.
Definition Camera.cpp:20
cv::Mat getExtrinsicParams() const
Returns the associated extrinsic parameters as an OpenCV matrix.
Definition Camera.cpp:162
std::string getDescription() const
Returns the description of the camera.
Definition Camera.cpp:170
bool hasExtrinsicParams() const
Returns true if this camera has associated extrinsic parameters.
Definition Camera.cpp:154
CameraParams getIntrinsicParams() const
Returns the associated intrinsic parameters as a CameraParams object.
Definition Camera.cpp:158
bool hasNext(uint32_t last_frame_num) const
Returns true if the Camera object has a frame that is different from the last one the client retrieve...
Definition Camera.cpp:119
Namespace for camera access system.
Definition Camera.cpp:13
::uint32_t uint32_t
std::chrono::time_point< dataclock > datatime_t
A point in time as measured by dataclock.
Definition data.h:31
uint32_t CameraID
The type of a camera id.
Definition data.h:46