グレースケール画像をバイナリに変換しようとしています。私が持っているコードはビットマップをグレースケールに変換しますが、その画像をバイナリに変換する方法がわかりません。これが私が現在持っているコードです。私を助けてください!!!ありがとう!
package com.example.vanderbilt;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.Paint;
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;
パブリッククラスBinaryextendsActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.binary);
ImageView img = (ImageView) findViewById(R.id.ivBinary);
/*
* Bitmap bmp = BitmapFactory.decodeResource(getResources(),
* R.drawable.sample4); Bitmap bmpGray = toGrayscale(bmp);
* img.setImageBitmap(bmpGray);
*/
Bitmap bmp = BitmapFactory.decodeResource(getResources(),
R.drawable.sample4);
Mat imgToProcess = Utils.bitmapToMat(bmp);
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 });
}
}
int widthM, heightM, rowsM, colsM;
colsM = imgToProcess.cols();
rowsM = imgToProcess.rows();
heightM = imgToProcess.height();
widthM = imgToProcess.width();
Bitmap bmpOut = Bitmap.createBitmap(imgToProcess.cols(),
imgToProcess.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(imgToProcess, bmpOut);
img.setImageBitmap(bmpOut);
}
public Bitmap toGrayscale(Bitmap bmpOriginal) {
int width, height;
height = bmpOriginal.getHeight();
width = bmpOriginal.getWidth();
Bitmap bmpGrayscale = Bitmap.createBitmap(width, height,
Bitmap.Config.RGB_565);
Canvas c = new Canvas(bmpGrayscale);
Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);
paint.setColorFilter(f);
c.drawBitmap(bmpOriginal, 0, 0, paint);
return bmpGrayscale;
}
}