Class CameraDevice
CameraDevice реализует устройство камеры, которое выводит InputFrame (содержит изображение, параметры камеры и временную метку). Доступно на Windows, Mac, Android и iOS.
После открытия можно вызывать start/stop для начала и остановки сбора данных. start/stop не влияют на ранее установленные параметры камеры.
Когда устройство больше не нужно, можно вызвать close для его закрытия. После close не следует продолжать использовать.
CameraDevice выводит InputFrame через inputFrameSource, inputFrameSource следует подключить к InputFrameSink для использования.
bufferCapacity обозначает ёмкость буфера InputFrame, если количество InputFrame, выведенных из этого устройства и не освобожденных, превышает это число, устройство перестанет выводить новые InputFrame, пока предыдущие InputFrame не будут освобождены. Это может вызвать проблемы, такие как зависание изображения.
При использовании на Android необходимо добавить объявление разрешения android.permission.CAMERA в AndroidManifest.xml.
При использовании на iOS необходимо добавить объявление разрешения NSCameraUsageDescription в Info.plist.
CameraDevice
Конструкторы
CameraDevice
void easyar_CameraDevice__ctor(easyar_CameraDevice * * Return)
+ (easyar_CameraDevice *) create
public convenience init()
Методы
isAvailable
Проверяет, доступно ли. Возвращает true только на Windows, Mac, Android и iOS.
bool easyar_CameraDevice_isAvailable(void)
static bool isAvailable()
public static boolean isAvailable()
companion object fun isAvailable(): Boolean
public static func isAvailable() -> Bool
public static bool isAvailable()
Возвращаемое значение
androidCameraApiType
На Android, можно использовать для получения используемого Camera API (camera1 или camera2). camera1 имеет лучшую совместимость, но не хватает некоторой необходимой информации, такой как временная метка. camera2 имеет проблемы совместимости на некоторых устройствах.
easyar_AndroidCameraApiType easyar_CameraDevice_androidCameraApiType(easyar_CameraDevice * This)
AndroidCameraApiType androidCameraApiType()
public int androidCameraApiType()
fun androidCameraApiType(): Int
- (easyar_AndroidCameraApiType)androidCameraApiType
public func androidCameraApiType() -> AndroidCameraApiType
public virtual AndroidCameraApiType androidCameraApiType()
Возвращаемое значение
setAndroidCameraApiType
На Android, можно использовать для настройки используемого Camera API (Camera 1 или Camera 2). Должно быть установлено до вызова openWithIndex, openWithSpecificType или openWithPreferredType, иначе не вступит в силу.
Рекомендуется использовать CameraDeviceSelector для создания CameraDevice с рекомендуемым Camera API на основе используемого основного алгоритма.
void easyar_CameraDevice_setAndroidCameraApiType(easyar_CameraDevice * This, easyar_AndroidCameraApiType type)
void setAndroidCameraApiType(AndroidCameraApiType type)
public void setAndroidCameraApiType(int type)
fun setAndroidCameraApiType(type: Int): Unit
- (void)setAndroidCameraApiType:(easyar_AndroidCameraApiType)type
public func setAndroidCameraApiType(_ type: AndroidCameraApiType) -> Void
public virtual void setAndroidCameraApiType(AndroidCameraApiType type)
Параметры
Возвращаемое значение
bufferCapacity
Ёмкость буфера InputFrame, значение по умолчанию 8.
int easyar_CameraDevice_bufferCapacity(const easyar_CameraDevice * This)
public int bufferCapacity()
fun bufferCapacity(): Int
public func bufferCapacity() -> Int32
public virtual int bufferCapacity()
Возвращаемое значение
setBufferCapacity
void easyar_CameraDevice_setBufferCapacity(easyar_CameraDevice * This, int capacity)
void setBufferCapacity(int capacity)
public void setBufferCapacity(int capacity)
fun setBufferCapacity(capacity: Int): Unit
- (void)setBufferCapacity:(int)capacity
public func setBufferCapacity(_ capacity: Int32) -> Void
public virtual void setBufferCapacity(int capacity)
Параметры
| Имя |
Тип |
Описание |
| capacity |
Int32 |
|
Возвращаемое значение
void easyar_CameraDevice_inputFrameSource(easyar_CameraDevice * This, easyar_InputFrameSource * * Return)
std::shared_ptr<InputFrameSource> inputFrameSource()
public @Nonnull InputFrameSource inputFrameSource()
fun inputFrameSource(): InputFrameSource
- (easyar_InputFrameSource *)inputFrameSource
public func inputFrameSource() -> InputFrameSource
public virtual InputFrameSource inputFrameSource()
Возвращаемое значение
setStateChangedCallback
Устанавливает обратный вызов для уведомления о состоянии отключения или захвата камеры. Действует только на платформе Windows.
void easyar_CameraDevice_setStateChangedCallback(easyar_CameraDevice * This, easyar_CallbackScheduler * callbackScheduler, easyar_OptionalOfFunctorOfVoidFromCameraState stateChangedCallback)
void setStateChangedCallback(std::shared_ptr<CallbackScheduler> callbackScheduler, std::optional<std::function<void(CameraState)>> stateChangedCallback)
public void setStateChangedCallback(@Nonnull CallbackScheduler callbackScheduler, @Nullable FunctorOfVoidFromCameraState stateChangedCallback)
fun setStateChangedCallback(callbackScheduler: CallbackScheduler, stateChangedCallback: FunctorOfVoidFromCameraState?): Unit
- (void)setStateChangedCallback:(easyar_CallbackScheduler *)callbackScheduler stateChangedCallback:(void (^)(easyar_CameraState))stateChangedCallback
public func setStateChangedCallback(_ callbackScheduler: CallbackScheduler, _ stateChangedCallback: ((CameraState) -> Void)?) -> Void
public virtual void setStateChangedCallback(CallbackScheduler callbackScheduler, Optional<Action<CameraState>> stateChangedCallback)
Параметры
Возвращаемое значение
requestPermissions
Запрашивает системное разрешение для камеры. Вы можете использовать эту функцию или самостоятельно запросить разрешение. Действует только на платформах Android и iOS, на других платформах поведение заключается в прямом вызове обратного вызова с уведомлением о предоставлении разрешения. Следует вызывать в UI-потоке.
void easyar_CameraDevice_requestPermissions(easyar_CallbackScheduler * callbackScheduler, easyar_OptionalOfFunctorOfVoidFromPermissionStatusAndString permissionCallback)
static void requestPermissions(std::shared_ptr<CallbackScheduler> callbackScheduler, std::optional<std::function<void(PermissionStatus, std::string)>> permissionCallback)
public static void requestPermissions(@Nonnull CallbackScheduler callbackScheduler, @Nullable FunctorOfVoidFromPermissionStatusAndString permissionCallback)
companion object fun requestPermissions(callbackScheduler: CallbackScheduler, permissionCallback: FunctorOfVoidFromPermissionStatusAndString?): Unit
+ (void)requestPermissions:(easyar_CallbackScheduler *)callbackScheduler permissionCallback:(void (^)(easyar_PermissionStatus status, NSString * value))permissionCallback
public static func requestPermissions(_ callbackScheduler: CallbackScheduler, _ permissionCallback: ((PermissionStatus, String) -> Void)?) -> Void
public static void requestPermissions(CallbackScheduler callbackScheduler, Optional<Action<PermissionStatus, string>> permissionCallback)
Параметры
Возвращаемое значение
cameraCount
Получает количество камер, распознанных операционной системой.
int easyar_CameraDevice_cameraCount(void)
public static int cameraCount()
companion object fun cameraCount(): Int
public static func cameraCount() -> Int32
public static int cameraCount()
Возвращаемое значение
openWithIndex
Открывает устройство камеры по индексу камеры.
bool easyar_CameraDevice_openWithIndex(easyar_CameraDevice * This, int cameraIndex)
bool openWithIndex(int cameraIndex)
public boolean openWithIndex(int cameraIndex)
fun openWithIndex(cameraIndex: Int): Boolean
- (bool)openWithIndex:(int)cameraIndex
public func openWithIndex(_ cameraIndex: Int32) -> Bool
public virtual bool openWithIndex(int cameraIndex)
Параметры
| Имя |
Тип |
Описание |
| cameraIndex |
Int32 |
|
Возвращаемое значение
openWithSpecificType
Открывает устройство камеры по точному типу устройства камеры, если нет совпадения, возвращает false. На Mac тип камеры не может быть определен.
bool easyar_CameraDevice_openWithSpecificType(easyar_CameraDevice * This, easyar_CameraDeviceType type)
bool openWithSpecificType(CameraDeviceType type)
public boolean openWithSpecificType(int type)
fun openWithSpecificType(type: Int): Boolean
- (bool)openWithSpecificType:(easyar_CameraDeviceType)type
public func openWithSpecificType(_ type: CameraDeviceType) -> Bool
public virtual bool openWithSpecificType(CameraDeviceType type)
Параметры
Возвращаемое значение
openWithPreferredType
Открывает устройство камеры по типу устройства камеры, если нет совпадения, попытается открыть первое устройство камеры.
bool easyar_CameraDevice_openWithPreferredType(easyar_CameraDevice * This, easyar_CameraDeviceType type)
bool openWithPreferredType(CameraDeviceType type)
public boolean openWithPreferredType(int type)
fun openWithPreferredType(type: Int): Boolean
- (bool)openWithPreferredType:(easyar_CameraDeviceType)type
public func openWithPreferredType(_ type: CameraDeviceType) -> Bool
public virtual bool openWithPreferredType(CameraDeviceType type)
Параметры
Возвращаемое значение
start
bool easyar_CameraDevice_start(easyar_CameraDevice * This)
public func start() -> Bool
public virtual bool start()
Возвращаемое значение
stop
Останавливает сбор данных. Этот метод останавливает только захват изображения, все параметры и соединения не будут затронуты.
void easyar_CameraDevice_stop(easyar_CameraDevice * This)
public func stop() -> Void
public virtual void stop()
Возвращаемое значение
close
Закрывает камеру. После close не следует продолжать использовать.
void easyar_CameraDevice_close(easyar_CameraDevice * This)
public func close() -> Void
public virtual void close()
Возвращаемое значение
index
Индекс камер. Вызывается после успешного открытия.
int easyar_CameraDevice_index(const easyar_CameraDevice * This)
public func index() -> Int32
public virtual int index()
Возвращаемое значение
type
Тип камеры. Вызывается после успешного открытия.
easyar_CameraDeviceType easyar_CameraDevice_type(const easyar_CameraDevice * This)
- (easyar_CameraDeviceType)type
public func type() -> CameraDeviceType
public virtual CameraDeviceType type()
Возвращаемое значение
cameraOrientation
Угол, на который нужно повернуть изображение камеры по часовой стрелке для отображения в естественном направлении устройства. Вызывается после успешного открытия.
int easyar_CameraDevice_cameraOrientation(const easyar_CameraDevice * This)
public int cameraOrientation()
fun cameraOrientation(): Int
public func cameraOrientation() -> Int32
public virtual int cameraOrientation()
Возвращаемое значение
cameraParameters
Параметры камеры, включая размер изображения, фокусное расстояние, главную точку, тип камеры и угол поворота камеры относительно естественного направления устройства. Вызывается после успешного открытия.
void easyar_CameraDevice_cameraParameters(easyar_CameraDevice * This, easyar_CameraParameters * * Return)
std::shared_ptr<CameraParameters> cameraParameters()
public @Nonnull CameraParameters cameraParameters()
fun cameraParameters(): CameraParameters
- (easyar_CameraParameters *)cameraParameters
public func cameraParameters() -> CameraParameters
public virtual CameraParameters cameraParameters()
Возвращаемое значение
setCameraParameters
Устанавливает параметры камеры. Вызывается после успешного открытия.
void easyar_CameraDevice_setCameraParameters(easyar_CameraDevice * This, easyar_CameraParameters * cameraParameters)
void setCameraParameters(std::shared_ptr<CameraParameters> cameraParameters)
public void setCameraParameters(@Nonnull CameraParameters cameraParameters)
fun setCameraParameters(cameraParameters: CameraParameters): Unit
- (void)setCameraParameters:(easyar_CameraParameters *)cameraParameters
public func setCameraParameters(_ cameraParameters: CameraParameters) -> Void
public virtual void setCameraParameters(CameraParameters cameraParameters)
Параметры
Возвращаемое значение
size
Получает текущий размер изображения. Вызывается после успешного открытия.
easyar_Vec2I easyar_CameraDevice_size(const easyar_CameraDevice * This)
public @Nonnull Vec2I size()
public func size() -> Vec2I
public virtual Vec2I size()
Возвращаемое значение
supportedSizeCount
Получает количество всех поддерживаемых размеров изображения для текущего устройства. Вызывается после успешного открытия.
int easyar_CameraDevice_supportedSizeCount(const easyar_CameraDevice * This)
public int supportedSizeCount()
fun supportedSizeCount(): Int
- (int)supportedSizeCount
public func supportedSizeCount() -> Int32
public virtual int supportedSizeCount()
Возвращаемое значение
supportedSize
Получает index-й размер изображения из всех поддерживаемых размеров для текущего устройства. Если index выходит за пределы, возвращает {0, 0}. Вызывается после успешного открытия.
easyar_Vec2I easyar_CameraDevice_supportedSize(const easyar_CameraDevice * This, int index)
Vec2I supportedSize(int index)
public @Nonnull Vec2I supportedSize(int index)
fun supportedSize(index: Int): Vec2I
- (easyar_Vec2I *)supportedSize:(int)index
public func supportedSize(_ index: Int32) -> Vec2I
public virtual Vec2I supportedSize(int index)
Параметры
| Имя |
Тип |
Описание |
| index |
Int32 |
|
Возвращаемое значение
setSize
Устанавливает текущий размер изображения. Будет использовано ближайшее доступное значение к установленному. Можно использовать size для получения фактического размера. Вызывается после успешного открытия. После установки size диапазон частоты кадров может измениться.
bool easyar_CameraDevice_setSize(easyar_CameraDevice * This, easyar_Vec2I size)
public boolean setSize(@Nonnull Vec2I size)
fun setSize(size: Vec2I): Boolean
- (bool)setSize:(easyar_Vec2I *)size
public func setSize(_ size: Vec2I) -> Bool
public virtual bool setSize(Vec2I size)
Параметры
| Имя |
Тип |
Описание |
| size |
Vec2I |
|
Возвращаемое значение
supportedFrameRateRangeCount
Получает количество всех поддерживаемых диапазонов частоты кадров для текущего устройства. Вызывается после успешного открытия.
int easyar_CameraDevice_supportedFrameRateRangeCount(const easyar_CameraDevice * This)
int supportedFrameRateRangeCount()
public int supportedFrameRateRangeCount()
fun supportedFrameRateRangeCount(): Int
- (int)supportedFrameRateRangeCount
public func supportedFrameRateRangeCount() -> Int32
public virtual int supportedFrameRateRangeCount()
Возвращаемое значение
supportedFrameRateRangeLower
Получает нижнюю границу index-го диапазона частоты кадров из всех поддерживаемых для текущего устройства. Вызывается после успешного открытия.
float easyar_CameraDevice_supportedFrameRateRangeLower(const easyar_CameraDevice * This, int index)
float supportedFrameRateRangeLower(int index)
public float supportedFrameRateRangeLower(int index)
fun supportedFrameRateRangeLower(index: Int): Float
- (float)supportedFrameRateRangeLower:(int)index
public func supportedFrameRateRangeLower(_ index: Int32) -> Float
public virtual float supportedFrameRateRangeLower(int index)
Параметры
| Имя |
Тип |
Описание |
| index |
Int32 |
|
Возвращаемое значение
supportedFrameRateRangeUpper
Получает верхнюю границу index-го диапазона частоты кадров из всех поддерживаемых для текущего устройства. Вызывается после успешного открытия.
float easyar_CameraDevice_supportedFrameRateRangeUpper(const easyar_CameraDevice * This, int index)
float supportedFrameRateRangeUpper(int index)
public float supportedFrameRateRangeUpper(int index)
fun supportedFrameRateRangeUpper(index: Int): Float
- (float)supportedFrameRateRangeUpper:(int)index
public func supportedFrameRateRangeUpper(_ index: Int32) -> Float
public virtual float supportedFrameRateRangeUpper(int index)
Параметры
| Имя |
Тип |
Описание |
| index |
Int32 |
|
Возвращаемое значение
frameRateRange
Получает индекс текущего диапазона частоты кадров для текущего устройства. Вызывается после успешного открытия. На iOS/macOS может возвращать -1, что означает нефиксированную частоту кадров; можно использовать supportedFrameRateRangeLower и supportedFrameRateRangeUpper для получения минимального и максимального значений.
int easyar_CameraDevice_frameRateRange(const easyar_CameraDevice * This)
public int frameRateRange()
fun frameRateRange(): Int
public func frameRateRange() -> Int32
public virtual int frameRateRange()
Возвращаемое значение
setFrameRateRange
Устанавливает индекс текущего диапазона частоты кадров для текущего устройства. Вызывается после успешного открытия.
bool easyar_CameraDevice_setFrameRateRange(easyar_CameraDevice * This, int index)
bool setFrameRateRange(int index)
public boolean setFrameRateRange(int index)
fun setFrameRateRange(index: Int): Boolean
- (bool)setFrameRateRange:(int)index
public func setFrameRateRange(_ index: Int32) -> Bool
public virtual bool setFrameRateRange(int index)
Параметры
| Имя |
Тип |
Описание |
| index |
Int32 |
|
Возвращаемое значение
setFlashTorchMode
Устанавливает режим вспышки в on. Вызывается после успешного открытия.
bool easyar_CameraDevice_setFlashTorchMode(easyar_CameraDevice * This, bool on)
bool setFlashTorchMode(bool on)
public boolean setFlashTorchMode(boolean on)
fun setFlashTorchMode(on: Boolean): Boolean
- (bool)setFlashTorchMode:(bool)on
public func setFlashTorchMode(_ on: Bool) -> Bool
public virtual bool setFlashTorchMode(bool on)
Параметры
| Имя |
Тип |
Описание |
| on |
Boolean |
|
Возвращаемое значение
setFocusMode
Устанавливает режим фокусировки в focusMode. Вызывается после успешного открытия.
bool easyar_CameraDevice_setFocusMode(easyar_CameraDevice * This, easyar_CameraDeviceFocusMode focusMode)
bool setFocusMode(CameraDeviceFocusMode focusMode)
public boolean setFocusMode(int focusMode)
fun setFocusMode(focusMode: Int): Boolean
- (bool)setFocusMode:(easyar_CameraDeviceFocusMode)focusMode
public func setFocusMode(_ focusMode: CameraDeviceFocusMode) -> Bool
public virtual bool setFocusMode(CameraDeviceFocusMode focusMode)
Параметры
Возвращаемое значение
autoFocus
Вызывает однократную автофокусировку. Используется после start. Доступно только когда FocusMode установлен в Normal или Macro.
bool easyar_CameraDevice_autoFocus(easyar_CameraDevice * This)
public boolean autoFocus()
public func autoFocus() -> Bool
public virtual bool autoFocus()
Возвращаемое значение