Android Camera2 önizlemesi uzatıldı

Sep 13 2020

Camera2 API'sini öğrenmeye çalışıyorum ve sadece fotoğraf çekmek için basit bir kamera uygulaması geliştirdim ancak karşılaştığım sorun, önizlemenin bazı çözünürlükler için uzatılmış olmasıdır. Bir dizi farklı gönderiden geçtim ve hepsi en boy oranımın yanlış olabileceğini önerdi, ancak Google'ın önerdiği AutoFitTextureView'ı doğru en boy oranıyla kullandım, yine de önizlemem geriliyor. Play Store'dan bazı açık kaynak kamera uygulamaları indirdim ve bunların birçoğu da ön kameramla aynı sorunu yaşadı (AÇIK KAMERA HARİÇ) ancak komik olan kısım, aynı uygulamayı başka bir cihazda kullanmam ve önizlemenin kesinlikle mükemmel olması. Sonunda uygulamamı farklı çözünürlüklerle test etmeye ve sonuçları gözlemlemeye karar verdim, ancak herhangi bir model bulamadım, lütfen herhangi biri bundan bir anlam çıkarmam için bana yardım edebilir mi ???

my device display size is 720x1280
Front camera results: 
SurfaceTexture        AutoFitTextureView         Result
buffer size           size       
2576x1932             720x960                    Normal
2560x1440             720x1280                   Normal
2048x1536             720x960                    Normal
2048x1152             720x1280                   Normal
1920x1920             720x720                    Normal
1920x1080             720x1280                   Normal
1440x1080             720x960                    Horizontally Stretched
1280x720              720x1280                   Horizontally Stretched
1072x1072             720x720                    Normal
960x720               720x960                    Normal
720x480               720x1080                   Horizontally Stretched
640x480               720x960                    Horizontally Stretched
352x288               720x880                    Normal
320x240               720x960                    Normal
256x144               720x1280                   Horizontally Stretched
176x144               720x880                    Normal

Yanıtlar

1 WebDiva Oct 04 2020 at 22:25

Yeni başlayanlar için Camera2'yi öğrenmek çok zor. En çok parçayı yapan kamera kitaplıklarını kullanmayı düşünün. İşte bulduğum en iyisi:https://camerakit.io/docs. Bu gerçekten çok kolay ve şu anda karşılaştığınız tüm sorunları halledecek.
(Bu projenin sahibi olmadığımı ve yine de tanıtımını yapmadığımı unutmayın. Camera2 API'yi denedim ve gerçekten zor, bu yüzden daha kolay bir çözüm önerdim.

EddyTalvala Oct 05 2020 at 07:13

Aslında bu bir cihaz hatası olabilir - kamera uygulaması, tam sensör boyutundan yanlış bir şekilde ölçekleniyor. Çoğu uygulamanın kullanmadığı alışılmadık boyutlarda daha yaygın olarak gerçekleşir.

Sizin durumunuzda, muhtemelen 1440x1080, kamera boru hattının bir kısmı tarafından 1920x1080 olarak ele alınır ve bu esneme ile sonuçlanır. Bazen bu, farklı bir çözünürlükte (hatta bazen aynı) ikinci bir çıktı (örneğin JPEG) eklenerek 'düzeltilebilir'.

Elbette, kodunuzda (veya AutoFitTextureView'da) bir mantık hatası olması mümkündür. Ancak bunlar için yararlı tavsiyeler vermek zordur - bu, tüm düzeni kontrol etme ve matematiği adım adım ölçeklendirme meselesidir.

Google'ın resmi kamera destek kitaplığı CameraX'i de deneyebilirsiniz . Beta sürümündedir ve önizleme, hala yakalama ve görüntü analizi gibi temel kullanım durumlarında sorunsuz çalışır.