Класс Aurora::StreamCamera::Camera
Камера. Подробнее…
Подключение: | #include <streamcamera.h> |
Публичные функции
~Camera () = default |
|
bool |
captureStarted () const |
bool |
getInfo ( CameraInfo & info) |
std::string |
getParameter (CameraParameter param) |
std::string |
getParameterRange (CameraParameter param) |
std::vector< PixelFormat > |
getSupportedPixelFormats () |
void |
setListener ( CameraListener * listener) |
bool |
setParameter (CameraParameter param, const std::string & value) |
bool |
startCapture (const CameraCapability & cap, PixelFormat format) |
bool |
stopCapture () |
Защищенные данные
CameraListener * |
m_cameraListener |
Подробное описание
Камера.
Деструктор
~Camera() = default
Описание методов
bool captureStarted() const
Проверяет, работает ли камера.
Возвращает
True
, если камера работает, иначе false
.
bool getInfo(CameraInfo & info)
Получить информацию о камере.
Аргументы
- [out]
info
— ссылка на структуруCameraInfo
для вывода.
Возвращает
True
, если информация о камере была успешно прочитана.
std::string getParameter(CameraParameter param)
Возвращает текущее значение параметра.
Аргументы
- [in]
param
— индекс параметра.
Возвращает
Синтаксис возвращаемого значения для getParameter()
:
- "v";
- "(x,y,w,h)" для прямоугольника;
- пустая строка, если возникает ошибка.
std::string getParameterRange(CameraParameter param)
Возвращает возможные значения параметра.
Аргументы
- [in]
param
— индекс параметра.
Возвращает
Синтаксис возвращаемого значения для getParameterRange()
:
- "v1,v2,v3" для возможного набора значений, например "1,2" или "false,true".
Пример на C++20 анализа дискретного диапазона гипотетического DiscreteInt
:
#include <string>
#include <vector>
#include <iostream>
std::vector<std::string> split(std::string in)
{
std::vector<std::string> tokens;
if (in.length() == 0)
return {};
std::size_t start = 0, end = 0;
for (auto v : in) {
if (v == ',') {
tokens.push_back(in.substr(start, end - start));
start = end + 1;
}
end++;
}
if (start != end)
tokens.push_back(in.substr(start, end - start));
return tokens;
}
std::vector<int> convert(std::vector<std::string> in)
{
std::vector<int> result;
for (auto v : in)
result.push_back(std::stoi(v));
return result;
}
...
std::string range = camera.getParameterRange(CameraParameter::DiscreteInt);
std::vector<int> rangeInt = convert(split(range));
- "v1-v10" для непрерывного значения, например "1-10" или "0,0-1,0" для значений с плавающей точкой.
Пример парсинга такого диапазона для гипотетического FloatValue
:
float minValue, maxValue;
std::string range = camera->getParameterRange(CameraParameter::FloatValue);
bool success = sscanf(range.c_str(), "%f-%f, &minV, &maxV) == 2;
- "-" для значения только для чтения;
- "x" для прямоугольника (значение "(x,y,w,h)");
- пустая строка, если возникает ошибка.
std::vector< PixelFormat > getSupportedPixelFormats()
Список поддерживаемых форматов пикселей.
Возвращает
Список поддерживаемых форматов пикселей или пустой список в случае возникновения ошибки.
void setListener(CameraListener * listener)
Установить обратные вызовы.
Аргументы
- [in]
listener
— объект с обратными вызовами.
bool setParameter(CameraParameter param, const std::string & value)
Устанавливает значение параметра.
Аргументы
- [in]
param
— индекс параметра. - [in]
value
:- "v" для дискретного или непрерывного значения;
- "(x,y,w,h)" для прямоугольника.
Возвращает
True означает, что значение принято.
bool startCapture(const CameraCapability & cap, PixelFormat format)
Начать захват.
Аргументы
- [in]
cap
— выходные параметры видео. - [in]
format
— желаемый формат пикселей для графических буферов.
Возвращает
True
, если камера успешно запущена, иначе false
.
bool stopCapture()
Остановить захват.
Возвращает
True
, если камера уже остановлена или остановлена успешно, в противном случае — false
.
Поля
CameraListener * m_cameraListener
Используется в setListener()
.