Перейти к содержанию
  • 0
Pax Beach

[TCameraComponent] Четкость изображения, полученного из TCameraComponent

Вопросы

Здравствуйте!

Не смог понять, как на лету настраивать четкость изображения с TCameraComponent.

 

FPS — 2-3 кадра в секунду меня устраивает, но четкость камера сама не настраивает, как это делает нативная камера смартфона.

В основном страдает задняя камера, фронтальная почему-то нормальную четкость держит.

Может знаете, как регулировать четкость фотографии (свойство, метод)?

 

Поделиться сообщением


Ссылка на сообщение

Рекомендуемые сообщения

  • 0

Думаю что автофокус (autoFocus) выключен, по умолчанию.

Надо как-то его включить

типа что-то такого:

Camera.FocusMode := .......;

 

хотя сейчас просто не помню точно

З.Ы. можно просто по коду поискать в ...\Program Files (x86)\Embarcadero\Studio\15.0\source\fmx\FMX.Media.pas

З.З.Ы. описание (условное))) по работе с камерой примерно там

Поделиться сообщением


Ссылка на сообщение
  • 0

Да, спасибо, получилось, как вы написали.
 
В «FMX.Media.pas» для CameraComponent есть свойство FocusMode с такими вариантами значений.
В приложении доработал пример работы TCameraComponent с возможностью фокусировки камеры.
На моем HTC One фокусировка работает только в значении fmContinuousAutoFocus.

 

procedure RegisterAliases;
begin
  AddEnumElementAliases(TypeInfo(TDevicePosition), ['dpUnspecified', 'dpFront', 'dpBack']);
  AddEnumElementAliases(TypeInfo(TFlashMode), ['fmAutoFlash', 'fmFlashOff', 'fmFlashOn']);
  AddEnumElementAliases(TypeInfo(TFocusMode), ['fmAutoFocus', 'fmContinuousAutoFocus', 'fmLocked']);
  AddEnumElementAliases(TypeInfo(TTorchMode), ['tmModeOff', 'tmModeOn', 'tmModeAuto']);
  AddEnumElementAliases(TypeInfo(TVideoCaptureQuality), ['vcPhotoQuality', 'vcHighQuality', 'vcMediumQuality', 'vcLowQuality']);
  AddEnumElementAliases(TypeInfo(TCameraKind), ['ckDefault', 'ckFrontCamera', 'ckBackCamera']);
end;

 

Мое мнение, компонент TCameraComponent не пригоден пока для промышленной эксплуатации — очень тяжело работает, для примеров разве что.
Решил в проекте использовать Standart Action — TTakePhotoFromCameraAction — стандартная камера устройства сама сделает качественное фото, остается только его обработать.

CameraComponentWith.zip

Поделиться сообщением


Ссылка на сообщение
  • 0

Мое мнение, компонент TCameraComponent не пригоден пока для промышленной эксплуатации — очень тяжело работает, для примеров разве что.

и самое обидное, что нет никакой инфы, что разработчики будут с такой ситуацией делать,

и есть ли вообще возможность что-то сделать, или fmx так и останется демо-фреймворком :(

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.

  • Похожий контент

    • От Pavel M
      В программе использую вспышку
      Camera.TorchMode := TTorchMode.ModeOn; После этого до камеры невозможно достучаться через IFMXCameraService.TakePhoto без предварительного включения затем выключения компонента. т.е. при любом обращении к свойствам компонента камера остается занятой для IFMXCameraService (даже при обращении к AvailableCaptureSettings)
      procedure TfrmMain.btnMakePhotoTap(Sender: TObject; const [Ref] Point: TPointF);var xService: IFMXCameraService; xParams: TParamsPhotoQuery; xCtrl: TControl; xCamera: TCameraComponent; xCamSettings: TArray<TVideoCaptureSetting>; xMaxResH, xMaxResW: Integer;begin //контрол для вызова IFMXCameraService.TakePhoto(AControl, AParam) xCtrl := TControl.Create(SELF); xCamera := TCameraComponent.Create(SELF); xCamSettings := xCamera.AvailableCaptureSettings; //получаем максимальное разрешение xMaxResH := xCamSettings[Low(xCamSettings)].Height; xMaxResW := xCamSettings[Low(xCamSettings)].Width; //////////////////////////////////////////////// // БЕЗ ЭТОГО xService.TakePhoto НЕ ЗАПУСКАЕТСЯ /////////////////////////////////////////////// xCamera.Active := True; //<- Именно сначала doStart xCamera.Active := False; // //////////////////////////// FreeAndNil(xCamera); if TPlatformServices.Current.SupportsPlatformService(IFMXCameraService, xService) then begin xParams.Editable := False; //ИНАЧЕ НЕ СОХРАНЯЕТ В АЛЬБОМ!!! xParams.NeedSaveToAlbum := True; xParams.RequiredResolution := TSize.Create(xMaxResH,xMaxResW ); xService.TakePhoto(xCtrl, xParams); end else ShowMessage('This device does not support the camera service'); FreeAndNil(xCtrl);end; Как можно освободить камеру без щелканья объективом? Задача сделать фото максимального качества в галерею.
      (Фактически это стандартный экшен "сделать фото" - но он не работает после игры с фанариком)
      Буду раз за любые комментарии по коду.
    • От kolyalyan
      У меня следующая проблема, когда подключаюсь к камере телефона, то кадры отображаются с ужасной задержкой, нааамного медленнее чем в сторонних приложениях работающих с камерой.

      Для подключения к камере использую следующий код:
       
      procedure TForm1.FormShow(Sender: TObject); var CDM : TCaptureDeviceManager; VC : TVideoCaptureDevice; begin CDM := TCaptureDeviceManager.Current; VC := CDM.DefaultVideoCaptureDevice; if (VC <> nil) then VC.OnSampleBufferReady := VideoBufferReady; VC.StartCapture; end; Для загрузки кадров в TImage этот:
       
      procedure TForml.VideoBufferReady(Sender: TObject; const ATime: int64); var VCD : TVideoCaptureDevice; begin VCD := Sender as TVideoCaptureDevice; VCD.SampleBufferToBitmap(Image1.Bitmap, True); end; Ещё раз повторюсь, что всё работает, но чрезвычайно медленно. Пробовал стандартный компонент TCameraComponent, но он работает также или даже ещё медленнее.
    • От neo
      Народ а как поменять разрешение получаемой картинки через CameraComponent?
      по умолчанию получаю очень маленькую картинку... хотелось бы сделать её на весь экран =(
      добавляю сюда CameraComponent1SampleBufferReady
      CameraComponent1.Quality := TVideoCaptureQuality.highQuality; image.Width := image.Bitmap.Width; image.Height := image.Bitmap.Height;
      но ничего не меняется =(
      походу это можно делать только в XE8 а у меня XE7
      и использовать нужно CaptureSetting
    • От AlexG
      Здравствуйте!
      Хотел бы опубликовать у Вас задачу для выполнения по теме http://fire-monkey.ru/topic/497-izmenenie-parametrov-kamery/

      Как правильно я должен это сделать?
      Какие условия для публикации задачи?
      Кого в качестве исполнителя, если такой найдется, я могу выбрать?

      Заранее благодарен за ответ!
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...