【Android图像处理】图像处理之-油画效果
来源:互联网 发布:广告投放算法好吃 编辑:程序博客网 时间:2024/04/25 07:19
油画给人的感觉怎么说呢?没有很漂亮,但是很有艺术感。
在Android中如何实现油画效果呢?
下面来看具体的算法:
//油画public static Bitmap Oil(Bitmap bitmap){int w = bitmap.getWidth();int h = bitmap.getHeight();Bitmap result = Bitmap.createBitmap(w, h, Bitmap.Config.RGB_565);int[] oldPx = new int[w * h];int[] newPx = new int[w * h];bitmap.getPixels(oldPx, 0, w, 0, 0, w, h);int index = 0; int subradius = 3; int intensity = 20;int[] intensityCount = new int[intensity+1]; int[] ravg = new int[intensity+1]; int[] gavg = new int[intensity+1]; int[] bavg = new int[intensity+1];//初始化for(int i = 0; i <= intensity; i++){ intensityCount[i] = 0; ravg[i] = 0; gavg[i] = 0; bavg[i] = 0; }for(int row = 0; row < h; row++){ int ta = 0, tr = 0, tg = 0, tb = 0; for(int col = 0; col < w; col++){ for(int subRow = -subradius; subRow <= subradius; subRow++){ for(int subCol = -subradius; subCol <= subradius; subCol++){ int nrow = row + subRow; int ncol = col + subCol; if(nrow >=h || nrow < 0){ nrow = 0; } if(ncol >= w || ncol < 0){ ncol = 0; }index = nrow * w + ncol; tr = (oldPx[index] >> 16) & 0xff; tg = (oldPx[index] >> 8) & 0xff; tb = oldPx[index] & 0xff; int curIntensity = (int)(((double)((tr+tg+tb)/3)*intensity)/255.0f); intensityCount[curIntensity]++; ravg[curIntensity] += tr; gavg[curIntensity] += tg; bavg[curIntensity] += tb; } } int maxCount = 0, maxIndex = 0; for(int m=0; m<intensityCount.length; m++){ if(intensityCount[m] > maxCount){ maxCount = intensityCount[m]; maxIndex = m; } } //计算平均值 int nr = ravg[maxIndex] / maxCount; int ng = gavg[maxIndex] / maxCount; int nb = bavg[maxIndex] / maxCount; index = row * w + col; newPx[index] = (ta << 24) | (nr << 16) | (ng << 8) | nb; //重新初始化for(int i=0; i<=intensity; i++){ intensityCount[i] = 0; ravg[i] = 0; gavg[i] = 0; bavg[i] = 0; } } }result.setPixels(newPx, 0, w, 0, 0, w, h);return result;}
以上算法的效果如下:
效果图 原图
这样也许会感觉效果不太明显,不仔细看根本看不出来。还缺了一步处理:加纹理
加上纹理后,效果是这样的:
油画 原图
Android实现图片加纹理
1 0
- 【Android图像处理】图像处理之-油画效果
- 图像处理之仿油画效果
- Atitit 图像处理之仿油画效果 Oilpaint油画滤镜 水彩画 漫画滤镜 v2
- Win8 Metro(C#)数字图像处理--2.44图像油画效果算法
- 【Android图像处理】图像处理之-百叶窗效果
- 【Android图像处理】图像处理之-素描效果
- 【Android图像处理】图像处理之--水纹效果
- Android图像处理之冰冻效果
- 图像处理之图像梯度效果
- 图像处理之图像梯度效果
- 图像处理之图像梯度效果
- 【Android图像处理】图像处理之-哈哈镜
- 图像处理之光束效果
- 图像处理之水纹效果
- 图像处理------图像梯度效果
- android图像处理之图像二值化
- 关于android系统图像特效处理之底片效果
- 关于android系统图像特效处理之光照效果
- Android网络——Http通信
- 奥塔在线:如何查看连接数?
- 安卓开发遇到的几个问题(网络定位,从网络获取所有省/市,SQLite,Service等)
- PowerMock相关
- Android录屏——屏幕录制命令screenrecord
- 【Android图像处理】图像处理之-油画效果
- 数据结构(十六) 线索二叉树讲解(带头节点后序加线索) 以及实现的完整代码
- idea 必备插件之键盘流篇
- Android Gson @SerializedName注解
- GIS就业参考系列之修炼篇——这里的黎明静悄悄
- [FUNC]RunOrActivate
- 2017 第一篇博客
- python光流算法学习
- 数位DP模板