Android Studio 给定二维数组float[][]和给定阈值,利用setPixels生成二值化(黑白)bitmap
程序员文章站
2022-10-03 17:08:24
直接上代码。//输入的数据类型可以根据需要更改 public static Bitmap ConvertToBinaryBitmap(float[][] data,float threshold){ //长宽根据实际更改,也可能是反过来的 //比如width=data[0].length; height=data.length; int width = data.length; int height = data[0].length;...
输入:
二维数组 float[][],以及给定的阈值 threshold
处理:
将数组中大于给定阈值的像素设为白色,小于阈值的设为黑色
输出:
二值化后的 bitmap
//我是在安卓上运行的,导入如下库
import android.graphics.Bitmap;
函数部分:
//输入的数据类型可以根据需要更改
public static Bitmap ConvertToBinaryBitmap(float[][] data,float threshold){
int width = data[0].length;
int height = data.length;
//创建初始图像
Bitmap result = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
//bitmap赋值
int[] pixs = new int[width * height];
for(int i=0;i<height;i++){
for(int j=0;j<width;j++){
int x = i*width+j;
//大于阈值,设置为白色
if(data[i][j]>threshold){
int r = ((pixs[x] >> 16) & 0xff)|0xff;
int g = ((pixs[x] >> 8) & 0xff)|0xff;
int b =( pixs[x] & 0xff)|0xff;
pixs[x] = 0xff000000 | (r << 16) | (g << 8) | b;
}
//小于阈值,设置为黑色
else {
pixs[x] = 0xff000000;
}
}
}
//写入图像
result.setPixels(pixs,0,width,0,0,width,height);
return result;
}
附加知识:
对于一个二维数组 float[][] test = new float[a][b]
其中a代表行数,也就是数组的高度;b代表列数,是数组的宽度。
且有以下关系满足:
test.length=a
test[0].length=b
本文地址:https://blog.csdn.net/bxdzyhx/article/details/107385815
上一篇: 二维数组和Arrays类的应用
下一篇: 屏和TP谁先休眠的问题