CameraDevice Class

Header: #include "easyar/camera.hpp"

Inherits: RefBase

Description

CameraDevice实现了一个camera设备。

CameraDevice工作在它自己的线程上。你可以open/close camera,也可以在任意时间关闭并重新开启一个不同的camera 设备或是设置不同的参数。start/stop用来开始和停止camera预览,这两个操作不会影响之前所设置的camera参数和算法连接。cam era的控制方法与系统API提供的方法类似。

CameraDevice是tracker以及其它算法的输入源。在调用任何其它方法之前,你需要首先调用open来打开一个设备,否则其它调用都将 是无效的。EasyAR里面所有的算法模块只有在连接CameraDevice之后才会工作。如果CameraDevice被关闭,所有算法将丢失与 该CameraDevice的连接,并且这些连接即使在重新打开设备之后也是无法恢复的,需要重新调用attach方法进行连接。

Public Types

enum FocusMode{kFocusModeNormal, kFocusModeTriggerauto, kFocusModeContinousauto, kFocusModeInfinity, kFocusModeMacro}
enum Device{kDeviceDefault, kDeviceBack, kDeviceFront}

Public Functions

CameraDevice()
virtual ~CameraDevice()
bool open(int camera = kDeviceDefault)
bool close()
virtual bool start()
virtual bool stop()
bool isOpened()
float frameRate() const
int supportedFrameRateCount() const
float supportedFrameRate(int idx) const
bool setFrameRate(float fps)
Vec2I size() const
int supportedSizeCount() const
Vec2I supportedSize(int idx) const
bool setSize(Vec2I size)
CameraCalibration cameraCalibration() const
bool setFlashTorchMode(bool on)
bool setFocusMode(FocusMode focusMode)
void setHorizontalFlip(bool flip) (since 1.3.0)

enum CameraDevice::FocusMode

Constant

Value

Description

kFocusModeNormal

0

常规对焦模式,在这个模式下需要调用setFocusMode(kFocusModeTriggerauto)来触发对焦。

kFocusModeTriggerauto

1

触发自动对焦。对焦模式将会被设为kFocusModeNormal.

kFocusModeContinousauto

2

连续自动对焦模式。

kFocusModeInfinity

3

无穷远对焦模式。

kFocusModeMacro

4

微距对焦模式。在这个模式下需要调用setFocusMode(kFocusModeTriggerauto)来触发对焦。

enum CameraDevice::Device

Constant

Value

Description

kDeviceDefault

0

默认camera。

kDeviceBack

1

后置camera。

kDeviceFront

2

前置camera。

CameraDevice()

创建CameraDevice实例。

virtual ~CameraDevice()

销毁CameraDevice实例。

bool open(int camera = kDeviceDefault)

打开类型为 camera 的camera设备。在桌面系统中,kDeviceDefault表示默认的camera,而大于0的数值表示设备号码(从1开始编号)。

bool close()

关闭camera。如果CameraDevice被关闭,所有算法将丢失与该CameraDevice的连接,并且这些连接即使在重新打开设备之后也 是无法恢复的,需要重新调用attach方法进行连接。

virtual bool start()

开始捕获图像。

virtual bool stop()

停止捕获图像。这个方法只会停止捕获,所有参数和算法连接将不会受到影响。

bool isOpened()

如果CameraDevice已打开则返回true,否则返回false。这个方法对于获取参数的函数是非常有用的,因为只有一个已经打开的came ra才会返回有效值。

float frameRate() const

获取当前帧率。在成功的open之后使用。

int supportedFrameRateCount() const

获取当前设备支持的所有帧率的个数。在成功的open之后使用。

float supportedFrameRate(int idx) const

获取所当前设备支持的所有帧率的第 idx 个。如果 idx 超出范围则返回0。在成功的open之后使用。

bool setFrameRate(float fps)

设置帧率。最接近设置值的可选值将被使用。可以使用frameRate来获取实际的帧率。在成功的open之后使用。

Vec2I size() const

获取当前图像大小。在成功的open之后使用。

int supportedSizeCount() const

获取当前设备支持的所有图像大小的个数。在成功的open之后使用。

Vec2I supportedSize(int idx) const

获取当前设备支持的所有图像大小的第 idx 个. 如果 idx 超出范围则返回{0, 0}。在成功的open之后使用。

bool setSize(Vec2I size)

设置当前图像大小。最接近设置值的可选值将被使用。可以使用size来获取实际的大小。在成功的open之后使用。

CameraCalibration cameraCalibration() const

获取当前相机标定数据。在成功的open之后使用。

bool setFlashTorchMode(bool on)

设置flash torch模式为 on 。在成功的open之后使用。

bool setFocusMode(FocusMode focusMode)

设置对焦模式为 focusMode 。在start之后使用。

void setHorizontalFlip(bool flip) (since 1.3.0)

设置camera的水平翻转标志。如果设置,camera图像相对默认状态会水平翻转。在成功的open之后使用。