CameraDevice Class

Description

CameraDevice实现了一个camera设备。

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

CameraDevice是 CameraFrameStreamer 的输入源。在调用任何其它方法之前,你需要首先调用open来打开一个设备,否则其它调用都将 是无效的。 CameraFrameStreamer 只有在连接CameraDevice之后才会工作。关闭或重新打开camera不会打破它与 CameraFrameStreamer 的连接。

Constructor

C: void easyar_CameraDevice__ctor(easyar_CameraDevice * * Return)
C++11: CameraDevice()
Traditional C++: CameraDevice()
Java: public CameraDevice()
Objective-C: + (easyar_CameraDevice *) create
Swift (since EasyAR SDK 2.1.0): public convenience init()

start

开始捕获图像。

C: bool easyar_CameraDevice_start(easyar_CameraDevice * This)
C++11: bool start()
Traditional C++: bool start()
Java: public native boolean start()
Objective-C: - (bool)start
Swift (since EasyAR SDK 2.1.0): public func start() -> Bool

stop

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

C: bool easyar_CameraDevice_stop(easyar_CameraDevice * This)
C++11: bool stop()
Traditional C++: bool stop()
Java: public native boolean stop()
Objective-C: - (bool)stop
Swift (since EasyAR SDK 2.1.0): public func stop() -> Bool

requestPermissions

请求camera系统权限。你可以选择使用这个函数或自己申请权限。

C: void easyar_CameraDevice_requestPermissions(easyar_CameraDevice * This, easyar_FunctorOfVoidFromPermissionStatusAndString permissionCallback)
C++11: void requestPermissions(std::function<void(PermissionStatus, std::string)> permissionCallback)
Traditional C++: void requestPermissions(FunctorOfVoidFromPermissionStatusAndString permissionCallback)
Java: public native void requestPermissions(FunctorOfVoidFromPermissionStatusAndString permissionCallback)
Objective-C: - (void)requestPermissions:(void (^)(easyar_PermissionStatus status, NSString * value))permissionCallback
Swift (since EasyAR SDK 2.1.0): public func requestPermissions(_ permissionCallback: @escaping (PermissionStatus, String) -> Void) -> Void

open

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

C: bool easyar_CameraDevice_open(easyar_CameraDevice * This, int camera)
C++11: bool open(int camera)
Traditional C++: bool open(int camera)
Java: public native boolean open(int camera)
Objective-C: - (bool)open:(int)camera
Swift (since EasyAR SDK 2.1.0): public func `open`(_ camera: Int32) -> Bool

close

关闭camera。

C: bool easyar_CameraDevice_close(easyar_CameraDevice * This)
C++11: bool close()
Traditional C++: bool close()
Java: public native boolean close()
Objective-C: - (bool)close
Swift (since EasyAR SDK 2.1.0): public func close() -> Bool

isOpened

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

C: bool easyar_CameraDevice_isOpened(easyar_CameraDevice * This)
C++11: bool isOpened()
Traditional C++: bool isOpened()
Java: public native boolean isOpened()
Objective-C: - (bool)isOpened
Swift (since EasyAR SDK 2.1.0): public func isOpened() -> Bool

setHorizontalFlip

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

在使用 Android 或 iOS 的前置摄像头并且 HorizontalFlip 设为 false的情况下,或者在使用其他摄像头并且 HorizontalFlip 设为 true 的情况下,EasyAR 会开启水平翻转模式。

在水平翻转模式下,只有在显示 camera 图像的时候,图像会相较原始数据水平翻转。用于跟踪等算法的 camera 数据不会被翻转。

默认行为与系统camera相同,在使用前置摄像头的时候看起来和照镜子一样。可以通过反转 HorizontalFlip 来改变这个行为。

C: void easyar_CameraDevice_setHorizontalFlip(easyar_CameraDevice * This, bool flip)
C++11: void setHorizontalFlip(bool flip)
Traditional C++: void setHorizontalFlip(bool flip)
Java: public native void setHorizontalFlip(boolean flip)
Objective-C: - (void)setHorizontalFlip:(bool)flip
Swift (since EasyAR SDK 2.1.0): public func setHorizontalFlip(_ flip: Bool) -> Void

frameRate

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

C: float easyar_CameraDevice_frameRate(const easyar_CameraDevice * This)
C++11: float frameRate()
Traditional C++: float frameRate()
Java: public native float frameRate()
Objective-C: - (float)frameRate
Swift (since EasyAR SDK 2.1.0): public func frameRate() -> Float

supportedFrameRateCount

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

C: int easyar_CameraDevice_supportedFrameRateCount(const easyar_CameraDevice * This)
C++11: int supportedFrameRateCount()
Traditional C++: int supportedFrameRateCount()
Java: public native int supportedFrameRateCount()
Objective-C: - (int)supportedFrameRateCount
Swift (since EasyAR SDK 2.1.0): public func supportedFrameRateCount() -> Int32

supportedFrameRate

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

C: float easyar_CameraDevice_supportedFrameRate(const easyar_CameraDevice * This, int idx)
C++11: float supportedFrameRate(int idx)
Traditional C++: float supportedFrameRate(int idx)
Java: public native float supportedFrameRate(int idx)
Objective-C: - (float)supportedFrameRate:(int)idx
Swift (since EasyAR SDK 2.1.0): public func supportedFrameRate(_ idx: Int32) -> Float

setFrameRate

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

C: bool easyar_CameraDevice_setFrameRate(easyar_CameraDevice * This, float fps)
C++11: bool setFrameRate(float fps)
Traditional C++: bool setFrameRate(float fps)
Java: public native boolean setFrameRate(float fps)
Objective-C: - (bool)setFrameRate:(float)fps
Swift (since EasyAR SDK 2.1.0): public func setFrameRate(_ fps: Float) -> Bool

size

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

C: easyar_Vec2I easyar_CameraDevice_size(const easyar_CameraDevice * This)
C++11: Vec2I size()
Traditional C++: Vec2I size()
Java: public native Vec2I size()
Objective-C: - (easyar_Vec2I *)size
Swift (since EasyAR SDK 2.1.0): public func size() -> Vec2I

supportedSizeCount

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

C: int easyar_CameraDevice_supportedSizeCount(const easyar_CameraDevice * This)
C++11: int supportedSizeCount()
Traditional C++: int supportedSizeCount()
Java: public native int supportedSizeCount()
Objective-C: - (int)supportedSizeCount
Swift (since EasyAR SDK 2.1.0): public func supportedSizeCount() -> Int32

supportedSize

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

C: easyar_Vec2I easyar_CameraDevice_supportedSize(const easyar_CameraDevice * This, int idx)
C++11: Vec2I supportedSize(int idx)
Traditional C++: Vec2I supportedSize(int idx)
Java: public native Vec2I supportedSize(int idx)
Objective-C: - (easyar_Vec2I *)supportedSize:(int)idx
Swift (since EasyAR SDK 2.1.0): public func supportedSize(_ idx: Int32) -> Vec2I

setSize

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

C: bool easyar_CameraDevice_setSize(easyar_CameraDevice * This, easyar_Vec2I size)
C++11: bool setSize(Vec2I size)
Traditional C++: bool setSize(Vec2I size)
Java: public native boolean setSize(Vec2I size)
Objective-C: - (bool)setSize:(easyar_Vec2I *)size
Swift (since EasyAR SDK 2.1.0): public func setSize(_ size: Vec2I) -> Bool

zoomScale

获取缩放比例。在成功的open之后使用。

C: float easyar_CameraDevice_zoomScale(const easyar_CameraDevice * This)
C++11: float zoomScale()
Traditional C++: float zoomScale()
Java: public native float zoomScale()
Objective-C: - (float)zoomScale
Swift (since EasyAR SDK 2.1.0): public func zoomScale() -> Float

setZoomScale

设置缩放比例。在成功的open之后使用。

C: void easyar_CameraDevice_setZoomScale(easyar_CameraDevice * This, float scale)
C++11: void setZoomScale(float scale)
Traditional C++: void setZoomScale(float scale)
Java: public native void setZoomScale(float scale)
Objective-C: - (void)setZoomScale:(float)scale
Swift (since EasyAR SDK 2.1.0): public func setZoomScale(_ scale: Float) -> Void

minZoomScale

最小支持的缩放比。在成功的open之后使用。

C: float easyar_CameraDevice_minZoomScale(const easyar_CameraDevice * This)
C++11: float minZoomScale()
Traditional C++: float minZoomScale()
Java: public native float minZoomScale()
Objective-C: - (float)minZoomScale
Swift (since EasyAR SDK 2.1.0): public func minZoomScale() -> Float

maxZoomScale

最大支持的缩放比。在成功的open之后使用。

C: float easyar_CameraDevice_maxZoomScale(const easyar_CameraDevice * This)
C++11: float maxZoomScale()
Traditional C++: float maxZoomScale()
Java: public native float maxZoomScale()
Objective-C: - (float)maxZoomScale
Swift (since EasyAR SDK 2.1.0): public func maxZoomScale() -> Float

cameraCalibration

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

C: void easyar_CameraDevice_cameraCalibration(const easyar_CameraDevice * This, easyar_CameraCalibration * * Return)
C++11: std::shared_ptr<CameraCalibration> cameraCalibration()
Traditional C++: void cameraCalibration(CameraCalibration * * Return)
Java: public native CameraCalibration cameraCalibration()
Objective-C: - (easyar_CameraCalibration *)cameraCalibration
Swift (since EasyAR SDK 2.1.0): public func cameraCalibration() -> CameraCalibration?

setFlashTorchMode

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

C: bool easyar_CameraDevice_setFlashTorchMode(easyar_CameraDevice * This, bool on)
C++11: bool setFlashTorchMode(bool on)
Traditional C++: bool setFlashTorchMode(bool on)
Java: public native boolean setFlashTorchMode(boolean on)
Objective-C: - (bool)setFlashTorchMode:(bool)on
Swift (since EasyAR SDK 2.1.0): public func setFlashTorchMode(_ on: Bool) -> Bool

setFocusMode

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

C: bool easyar_CameraDevice_setFocusMode(easyar_CameraDevice * This, easyar_CameraDeviceFocusMode focusMode)
C++11: bool setFocusMode(CameraDeviceFocusMode focusMode)
Traditional C++: bool setFocusMode(CameraDeviceFocusMode focusMode)
Java: public native boolean setFocusMode(/* CameraDeviceFocusMode */ int focusMode)
Objective-C: - (bool)setFocusMode:(easyar_CameraDeviceFocusMode)focusMode
Swift (since EasyAR SDK 2.1.0): public func setFocusMode(_ focusMode: CameraDeviceFocusMode) -> Bool

projectionGL

返回投影矩阵。

C: easyar_Matrix44F easyar_CameraDevice_projectionGL(easyar_CameraDevice * This, float nearPlane, float farPlane)
C++11: Matrix44F projectionGL(float nearPlane, float farPlane)
Traditional C++: Matrix44F projectionGL(float nearPlane, float farPlane)
Java: public native Matrix44F projectionGL(float nearPlane, float farPlane)
Objective-C: - (easyar_Matrix44F *)projectionGL:(float)nearPlane farPlane:(float)farPlane
Swift (since EasyAR SDK 2.1.0): public func projectionGL(_ nearPlane: Float, _ farPlane: Float) -> Matrix44F