2011-03-26 26 views
5

Kamera önizleme için önizleme verilerini kamera iş akışına göre görüntülemek için bir yüzey Görünümü ayarlayabilirsiniz. Ama önce önizleme verilerini geliştirmek istiyorum (örneğin kenar haritasını çıkar), sonra geliştirilmiş önizleme verisini sufaceView'e (sadece kenar haritasını göster) göster.Kamera önizlemesi nasıl geliştirilir?

Bunu nasıl yapmalıyım?

cevap

4

Yüzeye gönderilen kareleri durdurmanız ve otomatik olarak görüntülenmeniz gerekir. Bu soruyu sordum ve bu cevabı aldım, https://stackoverflow.com/a/4363417/514531, temel olarak SurfaceView türünü mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); yerine varsayılan ayar olarak değiştirmeniz gerekiyor, bu yüzden sadece bu satırı atlayın. İkinci olarak önizlemeyi herhangi bir ekrana ayarlamak istemezsiniz, böylece Kamerayı kurduğunuzda hattı kaldırın Camera.setPreviewDisplay(mHolder); // mHolder is your holder to the SurfaceView Bir Kamera Geri Arama ayarınız olduğunu varsayarsanız, bu sizin sınıfınızı Camera.PreviewCallback uygulayarak elde edilir. ham çerçevelerin alındığı bir onPreviewFrame() yöntemidir. Bu çerçeveleri Bitmap'lere işlemeniz gerekir ve bu https://stackoverflow.com/a/4367250/514531'da açıklanır. Bunu yaptıktan sonra, görüntü üzerinde herhangi bir görüntü işleme yapabilirsiniz. SurfaceView'de görüntüleri görüntülemek istediğinizde, bunu Bitmapler'i SurfaceView üzerinde bir tuvale çizerek yapabilirsiniz. Önce bir Canvas nesnesi oluşturup onu Canvas mCanvas = mHolder.lockCanvas() kullanarak SurfaceView'a ekleyin, artık Bitmap'inizi ekranda görüntülemek için Canvas sınıfının çeşitli Çizim yöntemlerini kullanabilirsiniz. Çizim yöntemlerini kullandıktan sonra görüntüyü görüntülemek için mHolder.unlockCanvas() numaralı telefonu arayın. Umarım peşinde olduğun şey budur.

İlgili konular