Инструменты пользователя

Инструменты сайта


develop:qt:media

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
develop:qt:media [2021/10/31 12:15]
admin
develop:qt:media [2021/11/05 11:38] (текущий)
admin
Строка 27: Строка 27:
 ===== QCamera ===== ===== QCamera =====
 Предоставляет интерфейс для системных камер.\\ Предоставляет интерфейс для системных камер.\\
-Можно использовать с **QCameraViewfinder** для отображения видоискателя, **Q<ediaRecorder** для записи видео и **QCameraImageCapture** для съемки изображений\\ +Можно использовать с **QCameraViewfinder** для отображения видоискателя, **QMediaRecorder** для записи видео и **QCameraImageCapture** для съемки изображений\\
-<details> +
-<summary> :!: Пример: использование QCameraViewfinder</summary> +
-<code cpp-qt> +
-camera= new Camera; +
-viewfinder= new QCameraViewfinder(); +
-viewfinder->show();+
  
-camera->setViewfinder(viewfindeer);+Имеется несколько свойств: 
 +  * **captureMode** тип носителя (CaptureViewfinder (отображение видоискателя); CaptureStillImage (захват изображения); CaptureVideo (захват видео)), изменение режима вызывает изменение статуса камеры. Так же, дается сигнал- **captureModeChanged()** 
 +  * **lockStatus** - общий статус всех запрошенных блокировок камеры (фокус/экспозиция и т.д.) 
 +  * **state** - текущее состояние камеры (UnloadedState; LoadedState; ActiveState). Есть сигнал 
 +  * **status** - текущий статус камеры (ActiveStatus; Starting; StoppingStatus и т.д.). Есть сигнал
  
-imageCapture= new QCameraImageCapture(camera); 
-camera->setCaptureMode(QCamera::CaptureStillImage); 
-camera->start(); 
-</code> 
-</details> 
  
 +==== QCameraImageCapture ====
 +Класс для доступа к функциям записи мультимедийных объектов.\\
 +enum **CaptureDestination**: {CaptureToFile; CaptureToBuffer}\\
 +
 +int **Capture(QString)**- захват изображения и сохранение его в файл. Асинхронная, вызываются сигналы типа imageCaptured(), imageSaved(id, name), error().\\
 +Если путь/имя файла не передано в аргументе, используется умолчательные, возвращается в сигналах.\\
 +Возвращает параметр **Id** используемый в упомянутых сигналах\\
 +Перед вызовом стоит проверить готовность камеры, свойство- **isReadyForCapture()**. Есть соответствующий сигнал.\\
 +
 +**imageAvailable(int Id, QVideoFrame)**- сигнал, посылается когда захват установлен в буфер и есть доступный кадр.\\
 +
 +
 +==== QCameraInfo ====
 +Получение информации о доступных в системе камерах.\\
 +Статические ф-ции **defaultCamera()** и **availableCameras()** возвращают доступные устр-ва.\\
 +Можно создавать собственные объекты, ссылающиеся на физ устр-ва\\
  
-Можно использовать **QCameraInfo** для вывода списка и выбора доступных камер\\ 
 <details> <details>
 <summary> :!: Пример: выбор камеры из списка </summary> <summary> :!: Пример: выбор камеры из списка </summary>
Строка 58: Строка 66:
  
  
 +==== QCameraViewfinder ====
 +Виджет видоискателя камеры
  
 +<details>
 +<summary> :!: Пример: использование QCameraViewfinder</summary>
 +<code cpp-qt>
 +camera= new Camera;
 +viewfinder= new QCameraViewfinder();
 +viewfinder->show();
  
-==== QCameraImageCapture ==== +camera->setViewfinder(viewfindeer);
- +
- +
-==== QCameraInfo ==== +
- +
- +
-==== QCameraViewfinder ====+
  
 +imageCapture= new QCameraImageCapture(camera);
 +camera->setCaptureMode(QCamera::CaptureStillImage);
 +camera->start();
 +</code>
 +</details>
  
  
 +==== QCameraFocus ====
 +Позволяет настраивать фокусировку и масштабирование.\\
 +Масштабирование может быть **оптическим** (более дорогое но более качественное, используются сенсоры камеры поэтому может не поддерживаться) либо **цифровым** (простое увеличение части рамки).\\
 +**maximumOpticalZoom()** позволяет проверить поддержку оптического зума, **zoomTo()** позволяет одновременно изменять оптическое и цифровое масштабирование.\\
  
 +Некоторое оборудование поддерживает автофокусировку, можно использовать с помощью **FocusPointMode**. Можно использовать в сочетании с **QCameraFocusZone**.\\
  
 +<details>
 +<summary> :!: Установить фокус в нижней части, 25% от угла.. вроде как</summary>
 +<code cpp-qt>
 +QCameraFocus *focus= camera->focus();
 +focus->setFocusMode(QCameraFocus::FocusPointCustom);
 +focus->setCustomFocusPoint(QPointF(0.25f, 0.75f));
  
 +// super zoom
 +focus->zoomTo(3.0, 4.0);
 +</code>
 +</details>
  
  
develop/qt/media.1635682515.txt.gz · Последнее изменение: 2021/10/31 12:15 — admin