Android-opencv converts mat to shades of gray using matToBitmap / bitmapToMat

I am using the new willcvarage opencv library in eclipse. And I want to convert the mat variable to shades of gray, I tried everything I found on the network, but they did not work for me.

Here is my code

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); } 

}

+6
source share
1 answer

Add the following code to the code:

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

Or you can access the pixels yourself:

 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}); } } 
+11
source

Source: https://habr.com/ru/post/903505/


All Articles