Android 图像灰度化、线性灰度变化、二值化处理方法

简介:

android

1、图像灰度化:

public Bitmap bitmap2Gray(Bitmap bmSrc) {  
    // 得到图片的长和宽  
    int width = bmSrc.getWidth();  
    int height = bmSrc.getHeight();  
    // 创建目标灰度图像  
    Bitmap bmpGray = null;  
    bmpGray = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);  
    // 创建画布  
    Canvas c = new Canvas(bmpGray);  
    Paint paint = new Paint();  
    ColorMatrix cm = new ColorMatrix();  
    cm.setSaturation(0);  
    ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);  
    paint.setColorFilter(f);  
    c.drawBitmap(bmSrc, 0, 0, paint);  
    return bmpGray;  
}

2、对图像进行线性灰度变化

public Bitmap lineGrey(Bitmap image) {
    //得到图像的宽度和长度  
    int width = image.getWidth();  
    int height = image.getHeight();  
    //创建线性拉升灰度图像  
    Bitmap linegray = null;  
    linegray = image.copy(Config.ARGB_8888, true);  
    //依次循环对图像的像素进行处理  
    for (int i = 0; i < width; i++) {  
        for (int j = 0; j < height; j++) {  
            //得到每点的像素值  
            int col = image.getPixel(i, j);  
            int alpha = col & 0xFF000000;  
            int red = (col & 0x00FF0000) >> 16;  
            int green = (col & 0x0000FF00) >> 8;  
            int blue = (col & 0x000000FF);  
            // 增加了图像的亮度  
            red = (int) (1.1 * red + 30);  
            green = (int) (1.1 * green + 30);  
            blue = (int) (1.1 * blue + 30);  
            //对图像像素越界进行处理  
            if (red >= 255)   
            {  
                red = 255;  
            }  

            if (green >= 255) {  
                green = 255;  
            }  

            if (blue >= 255) {  
                blue = 255;  
            }  
            // 新的ARGB  
            int newColor = alpha | (red << 16) | (green << 8) | blue;  
            //设置新图像的RGB值  
            linegray.setPixel(i, j, newColor);  
        }  
    }  
    return linegray;  
}  

3、对图像进行二值化

public Bitmap gray2Binary(Bitmap graymap) {  
    //得到图形的宽度和长度  
    int width = graymap.getWidth();  
    int height = graymap.getHeight();  
    //创建二值化图像  
    Bitmap binarymap = null;  
    binarymap = graymap.copy(Config.ARGB_8888, true);  
    //依次循环,对图像的像素进行处理  
    for (int i = 0; i < width; i++) {  
        for (int j = 0; j < height; j++) {  
            //得到当前像素的值  
            int col = binarymap.getPixel(i, j);  
            //得到alpha通道的值  
            int alpha = col & 0xFF000000;  
            //得到图像的像素RGB的值  
            int red = (col & 0x00FF0000) >> 16;  
            int green = (col & 0x0000FF00) >> 8;  
            int blue = (col & 0x000000FF);  
            // 用公式X = 0.3×R+0.59×G+0.11×B计算出X代替原来的RGB  
            int gray = (int) ((float) red * 0.3 + (float) green * 0.59 + (float) blue * 0.11);  
            //对图像进行二值化处理  
            if (gray <= 95) {  
                gray = 0;  
            } else {  
                gray = 255;  
            }  
            // 新的ARGB  
            int newColor = alpha | (gray << 16) | (gray << 8) | gray;  
            //设置新图像的当前像素值  
            binarymap.setPixel(i, j, newColor);  
        }  
    }  
    return binarymap;  
}  
目录
相关文章
|
8月前
|
开发工具 Android开发 开发者
Android `.9.png` 图像是用于UI的可拉伸格式,保持元素清晰度和比例
【6月更文挑战第26天】Android `.9.png` 图像是用于UI的可拉伸格式,保持元素清晰度和比例。通过边上的黑线定义拉伸区域,右下角黑点标识内容区域,适应文本或组件大小变化。常用于按钮、背景等,确保跨屏幕尺寸显示质量。Android SDK 提供`draw9patch.bat`工具来创建和编辑。**
272 6
|
8月前
|
开发工具 Android开发 Windows
Android Studio安装Unable to access Android SDK add-on list处理方法
Android Studio安装Unable to access Android SDK add-on list处理方法
273 0
|
8月前
|
Android开发
在Android上实现图像颜色过滤与反转
在Android上实现图像颜色过滤与反转
222 0
在Android上实现图像颜色过滤与反转
|
9月前
|
Android开发
Android实现圆形图像的两种方法(Glide和Picasso)
Android实现圆形图像的两种方法(Glide和Picasso)
433 1
|
9月前
|
开发工具 Android开发 开发者
Android UI设计: 解释Android的Nine-Patch图像是什么,它用于什么目的?
Android UI设计: 解释Android的Nine-Patch图像是什么,它用于什么目的?
107 4
|
9月前
|
XML Java Android开发
Android App开发之图像加工中给图像添加水波动态特效(附源码和演示视频 简单易懂)
Android App开发之图像加工中给图像添加水波动态特效(附源码和演示视频 简单易懂)
103 0
|
9月前
|
XML 前端开发 Java
Android App开发图像加工中卡片视图CardView和给图像添加装饰的讲解以及实战(附源码 简单易懂)
Android App开发图像加工中卡片视图CardView和给图像添加装饰的讲解以及实战(附源码 简单易懂)
407 0
|
9月前
|
XML 算法 Java
Android Studio App开发之利用图像解码器ImageDecoder播放GIF动图、Webp、HEIF图片(附源码 简单实用)
Android Studio App开发之利用图像解码器ImageDecoder播放GIF动图、Webp、HEIF图片(附源码 简单实用)
505 0
|
9月前
|
XML 安全 Java
Android Studio App开发之绘制简单的动画图像(附源码,简单易懂)
Android Studio App开发之绘制简单的动画图像(附源码,简单易懂)
208 1
|
9月前
|
Android开发
Android Studio入门之图像显示解析及实战(附源码 超详细必看)(包括图像视图、图像按钮、同时展示文本与图像)
Android Studio入门之图像显示解析及实战(附源码 超详细必看)(包括图像视图、图像按钮、同时展示文本与图像)
331 1

热门文章

最新文章

  • 1
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
  • 2
    Android历史版本与APK文件结构
  • 3
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 4
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 5
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
  • 6
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
  • 7
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 8
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 9
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
  • 10
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 1
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    14
  • 2
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    28
  • 3
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    34
  • 4
    Android历史版本与APK文件结构
    121
  • 5
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 6
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    23
  • 7
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    60
  • 8
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    37
  • 9
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    73
  • 10
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    121