博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android图像处理(3)浮雕效果
阅读量:4035 次
发布时间:2019-05-24

本文共 2321 字,大约阅读时间需要 7 分钟。

分享一下我老师大神的人工智能教程!零基础,通俗易懂!

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                这篇将讲到图片特效处理的浮雕效果。跟前面一样是对像素点进行处理,算法是通用的。

算法原理:用前一个像素点的RGB值分别减去当前像素点的RGB值并加上127作为当前像素点的RGB值。

例:

ABC

求B点的浮雕效果如下:

B.r = C.r - B.r + 127;

B.g = C.g - B.g + 127;

B.b = C.b - B.b + 127;

注意RGB值在0~255之间。

效果图:

                     原图                                                                              效果图

package com.color;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.widget.ImageView;public class ColorView extends ImageView { private Paint myPaint = null; private Bitmap bitmap = null; private int width,height; private int[] oldPixels;      private int[] newPixels;      private int color,color2;    private int pixelsR,pixelsG,pixelsB,pixelsA,pixelsR2,pixelsG2,pixelsB2;     public ColorView(Context context, AttributeSet attrs) {  super(context, attrs);  bitmap = BitmapFactory.decodeResource(context.getResources(),R.drawable.ww);   width = bitmap.getWidth();          height = bitmap.getHeight();        oldPixels = new int[width*height];         newPixels = new int[width*height];        invalidate(); } @Override protected void onDraw(Canvas canvas) {  super.onDraw(canvas);         //获取像素        bitmap.getPixels(oldPixels, 0, width, 0, 0, width, height);                for(int i = 1;i < height*width; i++){          color = oldPixels[i-1];          //前一个像素          pixelsR = Color.red(color);          pixelsG = Color.green(color);          pixelsB = Color.blue(color);          //当前像素          color2 = oldPixels[i];          pixelsR2 = Color.red(color2);          pixelsG2 = Color.green(color2);          pixelsB2 = Color.blue(color2);                    pixelsR = (pixelsR - pixelsR2 + 127);          pixelsG = (pixelsG - pixelsG2 + 127);          pixelsB = (pixelsB - pixelsB2 + 127);          //均小于等于255          if(pixelsR > 255){           pixelsR = 255;          }                    if(pixelsG > 255){           pixelsG = 255;          }                    if(pixelsB > 255){           pixelsB = 255;          }                    newPixels[i] = Color.argb(pixelsA, pixelsR, pixelsG, pixelsB);                  }        bitmap.setPixels(newPixels, 0, width, 0, 0, width, height);  canvas.drawBitmap(bitmap,0,0,myPaint); }}

           

给我老师的人工智能教程打call!

这里写图片描述
你可能感兴趣的文章
idea讲web项目部署到tomcat,热部署
查看>>
JMeter 保持sessionId
查看>>
IDEA Properties中文unicode转码问题
查看>>
Idea下安装Lombok插件
查看>>
zookeeper
查看>>
Idea导入的工程看不到src等代码
查看>>
技术栈
查看>>
Jenkins中shell-script执行报错sh: line 2: npm: command not found
查看>>
8.X版本的node打包时,gulp命令报错 require.extensions.hasownproperty
查看>>
Jenkins 启动命令
查看>>
Maven项目版本继承 – 我必须指定父版本?
查看>>
Maven跳过单元测试的两种方式
查看>>
通过C++反射实现C++与任意脚本(lua、js等)的交互(二)
查看>>
利用清华镜像站解决pip超时问题
查看>>
[leetcode BY python]1两数之和
查看>>
微信小程序开发全线记录
查看>>
Centos import torchvision 出现 No module named ‘_lzma‘
查看>>
PTA:一元多项式的加乘运算
查看>>
CCF 分蛋糕
查看>>
解决python2.7中UnicodeEncodeError
查看>>