当前位置: 移动技术网 > 移动技术>移动开发>Android > Android Studio 给定二维数组float[][]和给定阈值,利用setPixels生成二值化(黑白)bitmap

Android Studio 给定二维数组float[][]和给定阈值,利用setPixels生成二值化(黑白)bitmap

2020年07月18日  | 移动技术网移动技术  | 我要评论

输入:
二维数组 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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网