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)¶
- 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¶