2011-12-10 14 views
6

Estoy usando la biblioteca más reciente de opencv de willowgarage en eclipse. Y quiero convertir una variable mat a escala de grises, intenté todo lo que encontré en la red, pero no funcionaron para mí.android-opencv conversión de mat a escala de grises con el uso de matToBitmap/bitmapToMat

Aquí está mi código

package com.deneme.deneme; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.ImageView; 
import org.opencv.android.Utils; 
import org.opencv.core.Mat; 
import org.opencv.imgproc.Imgproc; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
public class main extends Activity { 
/** Called when the activity is first created. */ 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    ImageView img=(ImageView) findViewById(R.id.pic); 

    Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.p26); 

    Mat imgToProcess=Utils.bitmapToMat(bmp); 

    //****** 
    //right here I need to convert this imgToProcess to grayscale for future opencv processes 
    //****** 

    Bitmap bmpOut = Bitmap.createBitmap(imgToProcess.cols(), imgToProcess.rows(), Bitmap.Config.ARGB_8888); 

    Utils.matToBitmap(imgToProcess, bmpOut); 
    img.setImageBitmap(bmpOut); 
} 

}

Respuesta

11

Agregue el siguiente código en su bloque de código:

Imgproc.cvtColor(imgToProcess, imgToProcess, Imgproc.COLOR_BGR2GRAY); 
Imgproc.cvtColor(imgToProcess, imgToProcess, Imgproc.COLOR_GRAY2RGBA, 4); 

O puede acceder píxeles en solitario:

for(int i=0;i<imgToProcess.height();i++){ 
    for(int j=0;j<imgToProcess.width();j++){ 
     double y = 0.3 * imgToProcess.get(i, j)[0] + 0.59 * imgToProcess.get(i, j)[1] + 0.11 * imgToProcess.get(i, j)[2]; 
     imgToProcess.put(i, j, new double[]{y, y, y, 255}); 
    } 
} 
+0

Solo recuerda que opencv no usa estos pesos Esto es lo que usan: http://stackoverflow.com/questions/19181323/what-grayscale-conversion-algorithm-does-opencv-cvtcolor-use – Dinidiniz

Cuestiones relacionadas