2011-12-26 15 views
5

Şu anda iPhone'dan Android'e biraz eski kod aktarmaya çalışıyorum. Bu kod, bazı görüntü işleme yapmak için OpenCV kütüphanesini kullanır. Ve Mat ile Android Bitmap sınıfları arasında nasıl dönüşüm yapılacağını anlayamıyorum.Android'de OpenCV'de Bitmap ve Mat arasında dönüştürme yapmak için doğru yolu?

Bu kod, bir Mat'a bir bitmap yükleyen ve daha sonra Bitmap'e geri dönüştüren çok basitleştirilmiş bir örneği gösterir. Ortaya çıkan görüntü tuhaf görünüyor - mavi ve beyaz piksellerle dolu. Ve orijinal normal PNG resim olduğunu ...

Mat img = Utils.loadResource(context, resId); 
    Bitmap tmp = Bitmap.createBitmap(img.rows(), img.cols(), 
    Bitmap.Config.ARGB_8888);    
    Utils.matToBitmap(img, tmp); 

cevap

13

Şu matToBitmap biraz adamcağız, onlar gelecekteki bir sürümde düzeltmek niyetinde okudum.

Ben renk görüntü için etrafında nasıl çalıştığını gösterebilirim:

mMat = Utils.loadResource(this, resId, Highgui.CV_LOAD_IMAGE_COLOR); 
Imgproc.cvtColor(mMat, result, Imgproc.COLOR_RGB2BGRA); 
bmp = Bitmap.createBitmap(result.cols(), result.rows(), Bitmap.Config.ARGB_8888); 
Utils.matToBitmap(result, bmp); 
mImageView.setImageBitmap(bmp); 

Temelde i üzerinde rastgele bir renk garip harmanı olacağını söyledi birinci veya benzeri o boşluk renk dönüşümünü gerçekleştirmek.

Çalışırsa, sanırım öyle olduğunu düşünüyorum.

+0

"ResId" yi nasıl edinirsiniz? Bir kamera-niyet elde edilen görüntüyü bmp'den Mat'a, işlemden sonra tekrar geri dönüştürmeye çalışıyorum. Ve böylece, bmp ile ilgili tüm bilgiler yolun adı ve bmp'nin kendisidir. –

+0

@ user1446598 Android'de openCV kullanıyor musunuz? – greven

+0

Evet. Sorun çözüldü - Şu anda bulamadığım bir SO postası buldum, bu da prosedüre yardımcı oldu. Yine de, fotoğraf makinesinde çekilen bir fotoğraftan (çekilebilir öğelerden farklı olarak) bir resID'nin nasıl elde edileceğini hala bilmiyorum, ancak önerilen yaklaşım bunun yerine yol adını kullandı. –

İlgili konular