HMS Camera Engine

Önder
Huawei Developers - Türkiye
7 min readOct 23, 2020

Herkese merhaba, bu yazımda sizlere Camera Engine’in ne olduğunu ve nasıl kullanıldığını anlatacağım.

Camera Engine nedir?

Herkes, en güzel anlarını, özel anlarını, ailesi ve arkadaşlarıyla birlikte olduğu anları ölümsüzleştirmek ister. Günümüzde insanların çoğu akıllı telefonlara sahiptir, fotoğraf ve video çekerek o anı kolayca kaydedebilir.

Camera Engine, Huawei telefon kameralarıyla aynı fotoğraf çekme özelliklerine sahip uygulamalar oluşturulmasını sağlar. Dolayısıyla, Wide Aperture, Portrait Mode, HDR, Background Blur ve Super Night Mode gibi kamera özellikleri, anılarınızı kaliteli bir şekilde kaydetmek için, kullanıcılarınızın her zaman ve her yerde çarpıcı görüntüler ve canlı videolar çekmelerine yardımcı olabilir.

Camera Engine, EMUI 10.0 ile tamamen uyumludur. Android ve Huawei işletim sistemlerini desteklemektedir.

Nasıl Çalışır?

Camera Engine, önceden ayarlanmış kamera modlarına sahip bir SDK sunar. Birden çok gelişmiş kamera özelliğini desteklemek için Google Camera2 API’yi kullanır.

1. Front Camera HDR

Arkadan aydınlatmalı veya düşük ışıklı bir ortamda, ön kamera High Dynamic Range (HDR) fotoğrafların hem iyi aydınlatılmış hem de az aydınlatılmış alanlardaki ayrıntıları daha gerçekçi nitelikler sunmak için iyileştirir.

2. Super Night Mode

Bu mod, gece uzun pozlama kullanarak yeterli parlaklıkta fotoğraflar çekmeniz için kullanılır. Ayrıca diğer karanlık ortamlarda uygun şekilde pozlanmış fotoğraflar çekmenize de yardımcı olur.

3. Wide Aperture

Bu mod, arka planı bulanıklaştırır ve fotoğraftaki nesneyi vurgular. Fotoğraf çekerken nesnenin 2 metre yakınında olmanız ve bu modda flaşı devre dışı bırakmanız önerilir.

4. Recording

Bu mod, farklı renkler, filtreler ve AI filmi gibi efektlerle HD videolar kaydetmenize yardımcı olur.

5. Portrait

Bu mod, portre ve yakın çekimler kaydetmenize yardımcı olur.

6. Photo Mode

Bu mod, aşağıdakileri içeren ancak bunlarla sınırlı olmayan genel yetenekleri destekler:
Arka kamera: Flaş, renk modları, yüz / gülümseme algılama, filtre ve master AI
Ön kamera: Yüz / Gülümseme algılama, filtre, SensorHdr ve ayna yansıması

7. Super Slow-mo Recording

Bu mod, manuel veya otomatik (hareket algılama) modda 960 FPS üzerinde kare hızıyla süper ağır çekim videolar kaydetmenize olanak tanır.

8. Slow-mo Recording

Bu mod, 960 FPS’den daha düşük kare hızıyla ağır çekim videolar kaydetmenize olanak tanır.

9. Pro Mode (Video)

Pro modu, çeşitli çekim gereksinimlerini karşılamak için Huawei kamerasının profesyonel fotoğrafçılık ve kayıt yeteneklerini uygulamalara açmak için tasarlanmıştır.

9.1. Kare hızı ayarlama özelliği: CONTROL_AE_TARGET_FPS_RANGE

Video kaydı sırasında kare hızı, ürün özelliklerine bağlı olarak 12 ile 60 FPS arasında ayarlanabilir.
Hızlandırılmış fotoğrafçılık veya normalden daha yüksek kare hızlarında çekim gibi profesyonel çekim yöntemlerini kullanmanızı sağlar.
Daha yavaş deklanşör hızları elde etmek için daha düşük kare hızları da desteklenir. Kare hızı düşük olduğunda, deklanşör hızı düşüktür ve smearing gibi sanatsal efektlerle video çekimine izin verir.
30 FPS videoya kıyasla daha fazla ayrıntı yakalamak için 60 FPS kare hızında videolar da kaydedebilirsiniz.

9.2. TONEMAPPING ayarlama özelliği: TONEMAP_MODE and TONEMAP_CURVE

Daha fazla video tonu seçeneği sunmak için video kayıt eğrisi ayarı desteklenmektedir.

9.3. Renk sıcaklığı ve ton ayarlama özelliği: COLOR_CORRECTION_MODE and COLOR_CORRECTION_GAINS

Beyaz dengesi ve tonu manuel olarak ayarlama özelliği sağlayarak, kayıt renk sıcaklığı ve tonu ayarlanabilir.
Beyaz dengesinin doğruluğundan emin olarak renk sıcaklığını ayarlamak için RGB parametrelerini değiştirebilirsiniz.
Daha zengin video renk efektleri elde etmek için renk tonunu ayarlayabilirsiniz.

10. Pro Mode (Photo)

Bu mod, Huawei kamerası ile aynı çekim özelliklerini elde etmek için aşağıdaki kamera parametrelerini ayarlamanıza olanak tanır:

Ölçüm modu, ISO, pozlama telafisi, poz süresi, odak modu ve otomatik beyaz dengesi.

Geliştirme Süreci

İlk olarak, Huawei Developer web sitesine kaydolup oturum açıyoruz. Ardından Camera Engine SDK’yı indiriyoruz. SDK’yı indirdiğinizde, sistem sizden oturum açmanızı ve HUAWEI Media Service Usage Agreement imzalamanızı ister.

Kullanılan ortam olarak:

  • Android Studio v3.0.1 veya üstü önerilir.
  • Kirin 980 veya sonraki bir sürümü ile donatılmış ve EMUI 10.0 veya sonraki bir sürümünü çalıştıran Huawei telefonları gerekir.

Yeni bir proje oluşturduktan sonra build.gradle dosyalarını yapılandırıyoruz.
Ardından Camera Engine özelliklerini uygulamaya hazırız.

Genel Bakış

  • Mod Oluşturma

Uygulama başlatıldığında ve önizleme görünümü mevcut olduğunda bir Camera Kit modu oluşturun.

  • Mod Yapılandırması

Mod özelliklerine ve hizmet gereksinimlerine bağlı olarak, mod verilerini, durum dinleyicilerini ve ön izleme yüzeyini yapılandırır ve fotoğraf parametrelerini ayarlarsınız.

  • Mod Tabanlı İşlemler

Önizlemeyi Başlatma: Önizleme, mode status callback kullanılarak mod yapılandırmadan success döndürüldüğünde başlatılır.

Fonksiyonel Parametrelerin Ayarlanması:

Fotoğraf Çekme Modunu Kullanma: Geçerli modda fotoğraf çekmek için kullanıcı arayüzüne dokunun.

  • Callback İşlemleri

Mode Status Callback: Mod oluşturma durumunu ve kontrol süreçlerini değiştirmek için kullanılır.

Action Data Callback: Eylem verilerini eşzamansız olarak işlemek için kullanılır. Örneğin, bu callback, uygulamaya, fotoğraf çekildikten sonra bir JPEG görüntüsü oluşturulduğunu bildirmek için kullanılır.

Action Status Callback: Eylem durumunu eşzamansız olarak işlemek için kullanılır, örneğin, fotoğraf çekmeyi başlatmak veya durdurmak.

Mode Resource Release: Uygulamadan çıkıldığında, modun kullandığı kaynaklar serbest bırakılır.

Mod Geliştirme Yöntemleri

  • Front Camera HDR Modu

Yalnızca mCurrentModeType öğesini Mode.Type.HDR_MODE olarak ayarlayın. Diğer adımlar, sıradan mod geliştirme adımlarına benzer.

  • Super Night Modu

mCurrentModeType öğesini Mode.Type.SUPER_NIGHT_MODE olarak ayarlayın.
Sıradan moddan farklılıklar aşağıdaki gibidir:
Önizleme başladıktan sonra, bir uygulama kullanıcı arayüzünü ayarlamak için duyarlılığı ve pozlama süresini ayarlayın. Bu iki parametre ayarlanmazsa, varsayılan hassasiyet ve pozlama süresi kullanılır.

Fotoğraflama tamamlandıktan sonra fotoğraf çekmeyi durdurmak için API’yi çağırın.

Action status’u eşzamansız olarak işlemek için kullanılır. Örneğin, fotoğraf çekmeyi başlatmak veya durdurmak.

  • Ultra-wide Angle Modu

mCurrentModeType öğesini Mode.Type.BOKEH_MODE olarak ayarlayın.
Sıradan moddan farklılıklar aşağıdaki gibidir:
Önizleme başladıktan sonra, ultra geniş açı seviyesini ayarlamak için diyafram parametrelerini ayarlayın.

  • Recording Modu

mCurrentModeType öğesini Mode.Type.VIDEO_MODE olarak ayarlayın.
Sıradan moddan farklılıklar aşağıdaki gibidir:
Mod özelliklerine ve hizmet gereksinimlerine bağlı olarak, mode data ve status listeners ile ön izleme yüzeyini yapılandırır ve fotoğraflama parametrelerini ayarlarsınız.

Önizleme başladıktan sonra desteklenen özellikleri sorgulayın ve yapılandırın.

Önizleme başladıktan sonra, recording API’sini çağırın.

  • Portrait Modu

mCurrentModeType öğesini Mode.Type.PORTRAIT_MODE olarak ayarlayın.
Önizleme başladıktan sonra portre modunu yapılandırın.

  • Normal Mod

mCurrentModeType öğesini Mode.Type.NORMAL_MODE olarak ayarlayın.
Önizleme etkinleştirildikten sonra fotoğraf çekme özelliğini yapılandırabilirsiniz.
1) Normal mod, AI scene identification destekler.

2) Arka kamera ile seri çekim Normal modda desteklenir.

Veya

  • Super Slow-mo Recording Modu

mCurrentModeType öğesini Mode.Type.SUPER_SLOW_MOTION olarak ayarlayın.
Mod yapılandırma prosedüründeki farklılıklar aşağıdaki gibidir. Diğer adımlar, genel mod için olan adımlara benzer.

Bu iki yapılandırma öğesi, modeCharacteristics.getSupportedVideoSizes() tarafından döndürülen Map’e dayalı olarak çiftler halinde ayarlanmalıdır.
Süper ağır çekim modunda fotoğraf çekme desteklenmez. Bu nedenle, fotoğrafla ilgili hiçbir yapılandırma eklenmemelidir.
Video çözünürlüğü, önizleme çözünürlüğü ile aynı olmalıdır.
Farklı mod işlemleri aşağıdaki gibidir:

Kayıt işlemine başlamak için:

Manuel kayıt modu gerekiyorsa, bir kayıt görevini tamamlamak için doğrudan mMode.startRecording(file) öğesini çağırın. Kayıt yarıda durdurulamaz. Aksi takdirde kayıt başarısız olur.
Otomatik modda Super slow-mo çalışması yapmak için önce bir hareket algılama çerçevesi gönderin:

Algılama çerçevesi, ön izleme koordinat sisteminden merkezi koordinat sistemine dönüştürülmüş dikdörtgen bir çerçeve olmalıdır. Aksi takdirde teslim edilemez.
Dikdörtgen çerçeve geçerliyse, modül otomatik modda çalışır ve mMode.startRecording(file) çağrılır. Hareketli bir nesne tespit edilmeden önce, yani RecordingResult.State.RECORDING_STARTED döndürülmeden önce, kaydı durdurmak için mMode.stopRecording() öğesini çağırabilirsiniz. Hareket eden bir nesne tespit edildiğinde kayıt durdurulamaz. Aksi takdirde kayıt başarısız olur.
Otomatik modda, iletilen algılama alanı kaydedilmez. Kayıt bir kez gerçekleştirildikten sonra, çalışma modu manuel moda geçer. Otomatik kaydı yeniden gerçekleştirmek isterseniz, algılama alanını tekrar göndermeniz gerekir.

Ek olarak, Super-slow mode şunları destekler:
Arka kamera: flaş, yakınlaştırma ve otomatik odaklama.
Ön kamera: Ön kamera Super-slow mode desteklemez.

  • Slow-mo Recording Modu

mCurrentModeType öğesini Mode.Type.SLOW_MOTION_MODE olarak ayarlayın.
Aşağıda listelenen adımlar dışında, diğer adımlar normal kayıt modundakilerle aynıdır.

Ağır çekim modu, fotoğraf çekmeyi desteklemez. Bu nedenle, fotoğrafla ilgili hiçbir yapılandırma eklenmemelidir.

Ağır çekim modu, video kaydı sırasında işlemleri duraklatma ve sürdürme işlemlerini desteklemez.
Ek olarak, Slow-mo mode şunları destekler:
Arka kamera: flaş, yakınlaştırma, otomatik odaklama, renk modu ve yüz tanıma.
Ön kamera: Ön kamera, Slow-mo desteklemez.

  • Pro Mod
  1. mCurrentModeType’ı PRO_PHOTO_MODE veya PRO_VIDEO_MODE olarak ayarlayın.
  2. Bir Mode nesnesi oluşturmak için mCurrentModeType’ı kullanın.
  3. Karşılık gelen özelliği etkinleştirmek için Mode nesnesinin setParameter yöntemini çağırın.
  4. Fotoğraf çekmek ve video kaydetmek için Mode nesnesinin takePicture, startRecording ve stopRecording fonksiyonlarını kullanın.

Farklılıklar aşağıdaki gibidir:
Önizleme işlevi etkinleştirildikten sonra, Pro modunun ISO, pozlama süresi ve beyaz dengesi gibi değerlerini yapılandırabilirsiniz.

Diğer parametrelerin ayarları benzerdir. ISO ve pozlama süresi için, 0 değeri otomatik modu etkinleştirmek üzere iletilebilir.
Pro modu, ön kamerayı veya seri çekimi desteklemez.

Ek olarak, Pro modu şunları destekler:
Arka kamera: flaş, yakınlaştırma, otomatik odaklama, renk modu ve yüz tanıma.
Ön kamera: Ön kamera Pro modunu desteklemez.

RAW formatında bir fotoğraf çekmek için, desteklenen çözünürlüğü sorgulamak için ModeCharacteristics’ten getSupportedCaptureSizes(ImageFormat.RAW_SENSOR) kullanın, captureSize çözünürlüğünü seçin ve RAW görüntünün yüzeyini ayarlamak için ModeConfig.Builder’ın addCaptureImage(captureSize, ImageFormat.RAW_SENSOR) öğesini çağırın.

  • Pro Video Modu

mCurrentModeType öğesini Mode.Type.PRO_VIDEO_MODE olarak ayarlayın.
Aşağıda listelenen adımlar dışında, diğer adımlar normal kayıt modundakilerle aynıdır.
Pro video modu, ön kamerayı veya seri çekimi desteklemez.

Önizleme işlevi etkinleştirildikten sonra, recording API’sini çağırın.
Pro kayıt modunda parametrelerin teslimi, Pro çekim modundakine benzer. Aradaki fark, Pro video modunda pozlama süresini ayarlamak için bir parametre olmamasıdır.

Ek olarak, Pro video modu şunları destekler:
Arka kamera: flaş, yakınlaştırma, otomatik odaklama, renk modu ve yüz tanıma.
Ön kamera: Ön kamera, Pro video modunu desteklemez.

Tüm bu özelliklerle, Huawei telefon kameralarının güçlü görüntü işleme yeteneklerini uygulamalarınıza entegre etmeniz için bir dizi gelişmiş programlama API’si sağlanmıştır.

Referanslar

--

--