13 #include <opencv2/core.hpp>
43 default:
return "UNKNOWN";
62 default:
return "UNKNOWN";
94 { return cmp.widthPix == toFind.width && cmp.heightPix == toFind.height; }) !=
_streamConfigs.end();
97 void add(
int widthPix,
int heightPix,
float focalLengthPix)
100 config.widthPix = widthPix;
101 config.heightPix = heightPix;
102 config.focalLengthPix = focalLengthPix;
143 std::pair<const SENSCameraDeviceProps* const, const SENSCameraStreamConfig* const>
145 const float horizFov,
147 const int height)
const;
174 bool provideIntrinsics =
true) = 0;
212 bool intrinsicsChanged);
std::chrono::high_resolution_clock::time_point SENSTimePt
static std::string getPrintableFacing(SENSCameraFacing facing)
mapping of SENSCameraFacing to a readable string
static std::string getPrintableFocusMode(SENSCameraFocusMode focusMode)
mapping of SENSCameraFocusMode to a readable string
SENSCameraFocusMode
Definition of autofocus mode.
SENSCameraFacing
Definition of camera facing.
std::shared_ptr< SENSFrameBase > SENSFrameBasePtr
Implementation of common functionality and members.
void registerListener(SENSCameraListener *listener) override
std::vector< SENSCameraListener * > _listeners
SENSCameraConfig _config
indicates what is currently running
std::atomic< bool > _permissionGranted
bool started() const override
SENSFrameBasePtr latestFrame() override
Get the latest captured frame. If no frame was captured the frame will be empty (null).
SENSCaptureProps _captureProperties
void unregisterListener(SENSCameraListener *listener) override
SENSFrameBasePtr _frame
current frame
std::atomic< bool > _started
flags if camera was started
void setPermissionGranted() override
void updateFrame(cv::Mat bgrImg, cv::Mat intrinsics, int width, int height, bool intrinsicsChanged)
bool permissionGranted() const override
std::mutex _listenerMutex
void processStart()
call from start function to do startup preprocessing
const SENSCameraConfig & config() const override
defines how the camera was configured during start
int findBestMatchingConfig(cv::Size requiredSize) const
SENSCameraDeviceProps(const std::string &deviceId, SENSCameraFacing facing)
const SENSCameraFacing & facing() const
bool contains(cv::Size toFind)
std::vector< SENSCameraStreamConfig > _streamConfigs
const std::string & deviceId() const
const std::vector< SENSCameraStreamConfig > & streamConfigs() const
void add(int widthPix, int heightPix, float focalLengthPix)
Pure abstract camera class.
virtual SENSFrameBasePtr latestFrame()=0
Get the latest captured frame. If no frame was captured the frame will be empty (null).
virtual const SENSCameraConfig & start(std::string deviceId, const SENSCameraStreamConfig &streamConfig, bool provideIntrinsics=true)=0
virtual void registerListener(SENSCameraListener *listener)=0
virtual bool started() const =0
virtual bool permissionGranted() const =0
virtual void unregisterListener(SENSCameraListener *listener)=0
virtual const SENSCaptureProps & captureProperties()=0
Get SENSCaptureProps which contains necessary information about all available camera devices and thei...
virtual const SENSCameraConfig & config() const =0
defines how the camera was configured during start
virtual void setPermissionGranted()=0
virtual void stop()=0
Stop a started camera device.
virtual void onFrame(const SENSTimePt &timePt, cv::Mat frame)=0
virtual ~SENSCameraListener()
virtual void onCameraConfigChanged(const SENSCameraConfig &config)=0
bool containsDeviceId(const std::string &deviceId) const
std::pair< const SENSCameraDeviceProps *const, const SENSCameraStreamConfig *const > findBestMatchingConfig(SENSCameraFacing facing, const float horizFov, const int width, const int height) const
Helper function to find a camera device and stream configuration with certain characteristics.
const SENSCameraDeviceProps * camPropsForDeviceId(const std::string &deviceId) const
bool supportsCameraFacing(const SENSCameraFacing &facing) const
Config config
The configuration set in App::run.
SENSCameraFacing facing
camera facing
SENSCameraStreamConfig streamConfig
currently selected stream config index (use it to look up original capture size)
SENSCameraConfig(std::string deviceId, const SENSCameraStreamConfig &streamConfig, SENSCameraFacing facing, SENSCameraFocusMode focusMode=SENSCameraFocusMode::CONTINIOUS_AUTO_FOCUS)
SENSCameraFocusMode focusMode
autofocus mode
SENSCameraConfig()=default