android opengl es 飘动的flag

OpenGL中的顶点缓冲区(Vertex Buffer) Vertex buffer即顶点缓冲区。从字面意思来看,这个词就是指储存是顶点数据的缓冲区,本质还是一个缓冲区(buffer),是占一定字节的内存。就像在C++中我们用声明并赋值一个int类型,在内存中开辟4个字节空间来储存数据,这是在CPU上进行的。而Vertex buffer是OpenGL在GPU中开辟空间储存数据。当我们运行程序绘制图形时,显卡会从缓存(buffer)中读取顶点数据,进行绘制。 今天我们来看一下如何用OpenGL来创建顶点缓存区(vertex buffer)。我个人感觉这个过程和编程 阅读详情

越来越感到知识相关性的重要性,光会一点编程,是远远不够的。数学,物理,和计算机是不可分割兄弟。

 

(1)Activity类

 

package sim.feel;

import android.app.Activity;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.opengl.GLSurfaceView;
import android.opengl.GLSurfaceView.Renderer;
import android.os.Bundle;

public class FlagActivity extends Activity {
    /** Called when the activity is first created. */
    GLSurfaceView glSurfaceView;
    Renderer renderer;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LoadImage.load(getResources());
        renderer = new MyRenderer();
        glSurfaceView = new GLSurfaceView(this);
        glSurfaceView.setRenderer(renderer);
        setContentView(glSurfaceView);
    }
}

//载入图片
class LoadImage {
    public static Bitmap bitmap;

    public static void load(Resources res) {
        bitmap = BitmapFactory.decodeResource(res, R.drawable.img);
    }
}

 

 

 

 

(2)Renderer类

 

package sim.feel;

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;

import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;

import android.opengl.GLSurfaceView.Renderer;
import android.opengl.GLUtils;

public class MyRenderer implements Renderer {
    // Points 网格顶点数组(45,45,3)
    float vertex[][][] = new float[45][45][3];
    // 指定旗形波浪的运动速度
    int wiggle_count = 0;
    // 临时变量
    float hold;
    // x,y,z转角
    float xrot, yrot, zrot;
    // vertex
    private float[] texVertex = new float[12];
    // vetexBuffer
    private FloatBuffer vertexBuffer;
    // coord
    private float[] coord = new float[8];
    // coordBuffer
    private FloatBuffer coordBuffer;
    // textures
    private int[] textures = new int[1];

    // init()
    public void init() {
        ByteBuffer texByteBuffer = ByteBuffer
                .allocateDirect(texVertex.length * 4);
        texByteBuffer.order(ByteOrder.nativeOrder());
        vertexBuffer = texByteBuffer.asFloatBuffer();
        vertexBuffer.put(texVertex);
        vertexBuffer.position(0);

        ByteBuffer coordByteBuffer = ByteBuffer
                .allocateDirect(coord.length * 4);
        coordByteBuffer.order(ByteOrder.nativeOrder());
        coordBuffer = coordByteBuffer.asFloatBuffer();
        coordBuffer.put(coord);
        coordBuffer.position(0);
    }

    @Override
    public void onDrawFrame(GL10 gl) {
        init();
        int x, y; // 循环变量
        float _x, _y, _xb, _yb; // 用来将旗形的波浪分割成很小的四边形

        gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); // 清除屏幕和深度缓冲
        gl.glLoadIdentity(); // 重置当前的模型观察矩阵

        gl.glTranslatef(0.0f, 0.0f, -12.0f); // 移入屏幕12个单位

        gl.glRotatef(xrot, 1.0f, 0.0f, 0.0f); // 绕 X 轴旋转
        gl.glRotatef(yrot, 0.0f, 1.0f, 0.0f); // 绕 Y 轴旋转
        gl.glRotatef(zrot, 0.0f, 0.0f, 1.0f); // 绕 Z 轴旋转

        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
        gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);

        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
        gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, coordBuffer);

        for (x = 0; x < 44; x++) {
            for (y = 0; y < 44; y++) {
                _x = (float) (x) / 44.0f; // 生成X浮点值
                _y = (float) (y) / 44.0f; // 生成Y浮点值
                _xb = (float) (x + 1) / 44.0f; // X浮点值+0.0227f
                _yb = (float) (y + 1) / 44.0f; // Y浮点值+0.0227f

                coordBuffer.clear();
                // bottom left
                coordBuffer.put(_x);
                coordBuffer.put(_y);
                // bottom right
                coordBuffer.put(_x);
                coordBuffer.put(_yb);
                // top right
                coordBuffer.put(_xb);
                coordBuffer.put(_yb);
                // top left
                coordBuffer.put(_xb);
                coordBuffer.put(_y);

                vertexBuffer.clear();
                // bottom left
                vertexBuffer.put(vertex[x][y][0]);
                vertexBuffer.put(vertex[x][y][1]);
                vertexBuffer.put(vertex[x][y][2]);
                // bottom right
                vertexBuffer.put(vertex[x][y + 1][0]);
                vertexBuffer.put(vertex[x][y + 1][1]);
                vertexBuffer.put(vertex[x][y + 1][2]);
                // top right
                vertexBuffer.put(vertex[x + 1][y + 1][0]);
                vertexBuffer.put(vertex[x + 1][y + 1][1]);
                vertexBuffer.put(vertex[x + 1][y + 1][2]);
                // top left
                vertexBuffer.put(vertex[x + 1][y][0]);
                vertexBuffer.put(vertex[x + 1][y][1]);
                vertexBuffer.put(vertex[x + 1][y][2]);

                gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 0, 4);
            }
        }

        gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
        gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);

        if (wiggle_count == 2) { // 用来降低波浪速度(每隔2帧一次)
            for (int j = 0; j < 45; j++) {
                hold = vertex[0][j][2]; // 存储当前左侧波浪值
                for (int i = 0; i < 44; i++) {
                    // 当前波浪值等于其右侧的波浪值
                    vertex[i][j][2] = vertex[i + 1][j][2];
                }
                vertex[44][j][2] = hold;
            }
            wiggle_count=0;
        }

        wiggle_count++;
        xrot += 0.3f; // X 轴旋转
        yrot += 0.2f; // Y 轴旋转
        zrot += 0.4f; // Z 轴旋转
    }

    @Override
    public void onSurfaceChanged(GL10 gl, int width, int height) {
        float ratio = (float) width / (float) height;
        // 设置OpenGL场景的大小
        gl.glViewport(0, 0, width, height);
        // 设置投影矩阵
        gl.glMatrixMode(GL10.GL_PROJECTION);
        // 重置投影矩阵
        gl.glLoadIdentity();
        // 设置视口的大小
        gl.glFrustumf(-ratio, ratio, -1, 1, 1, 15);
        // 选择模型观察矩阵
        gl.glMatrixMode(GL10.GL_MODELVIEW);
        // 重置模型观察矩阵
        gl.glLoadIdentity();
    }

    @Override
    public void onSurfaceCreated(GL10 gl, EGLConfig config) {
        // 黑色背景
        gl.glClearColor(0, 0, 0, 0);
        // 启用阴影平滑
        gl.glShadeModel(GL10.GL_SMOOTH);
        // 启用深度测试
        gl.glEnable(GL10.GL_DEPTH_TEST);
        // 启用纹理映射
        gl.glClearDepthf(1.0f);
        // 深度测试的类型
        gl.glDepthFunc(GL10.GL_LEQUAL);
        // 精细的透视修正
        gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);
        // 允许2D贴图,纹理
        gl.glEnable(GL10.GL_TEXTURE_2D);

        gl.glEnable(GL10.GL_LEQUAL);

        // 创建纹理
        gl.glGenTextures(1, textures, 0);
        // 设置要使用的纹理
        gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);

        // 生成纹理
        GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, LoadImage.bitmap, 0);
        // 线形滤波
        gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER,
                GL10.GL_LINEAR);
        gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER,
                GL10.GL_LINEAR);


        //NEW
        // 沿X平面循环
        for (int x = 0; x < 45; x++) {
            // 沿Y平面循环
            for (int y = 0; y < 45; y++) {
                // 向表面添加波浪效果
                // -4.5f~4.5f
                vertex[x][y][0] = ((float) x / 5.0f) - 4.5f;
                vertex[x][y][1] = (((float) y / 5.0f) - 4.5f);
                // 0-2*pai
                vertex[x][y][2] = (float) (Math
                        .sin(((((float) x / 5.0f) * 40.0f) / 360.0f) * 3.141592654 * 2.0f));
            }
        }

    }
}

 

效果如下:

MIUI 6的毛玻璃效果的技术实现(实时模糊) 说说MIUI 6的毛玻璃效果的技术实现。 很久以前我们的文件夹打开和最近任务等几个地方就使用了毛玻璃效果,在技术上讲就是背景模糊。应该是比iOS 7的使用要早很多。不过那时候我们使用的是先对背景截图,再将其模糊处理,然后作为app的背景图,所以是一张静止的图片,当背景内容发生变化时模糊的图片并不会随之变化,因此比较生硬。而iOS 7的背景模糊则是实时的,当背景变化的时候,模糊内容 阅读详情

相关推荐

android项目下对图片高斯模糊毛玻璃自定义view

android项目下对图片高斯模糊毛玻璃,自定义view,模糊程度可控制,高斯模糊毛玻璃,自定义view,模糊程度可控制

OpenGL ES (12): 答疑解惑 -- GLES20的绘图相关方法解释

1.介绍 之前的文章中已经写到在Render中的onDrawFrame()调用了 mTriangle.draw(),进行了三角形的绘制。 我们这里是要分析draw()里面的东西 关于GLES20的绘图方法,解释参数。   2.先看之前代码中的内容具体是怎样 public Triangle() { ByteBuffer bb = ByteBuffer.allocateDi...

八步赶蝉 3492

Android实现图片的高斯模糊效果

Android使用RenderScript实现图片的高斯模糊效果。通过在网上资料查找,有以下4种方法可以实现: - RenderScript - Java算法 - NDK算法 - openGL 最终考虑,使用RenderScript 应该是最适合的。

Android OpenGLES视频模糊,毛玻璃效果

最近帮朋友做了个给视频加模糊的功能,毛玻璃效果,思路很简单,首先要先知道哪些参数能修改模糊度,我在动态调节模糊里说了sigma,blurRadius和图片尺寸都会影响模糊效果,在画面清晰时sigma对模糊的效果影响特别小,而blurRadius必须很大的时候才能达到效果,可是blurRadius太大会照成视频卡顿,所以最简单的方法是先降低画面尺寸,在设置blurRadius和sigma。 思路有了,接下来是原理,缩小画面尺寸,先想到的应该是改变视频的长宽,但我们不能去改原文件的长宽,所以只能对解码出来的视

红色与青色 3030

Android利用RenderScript实现毛玻璃模糊效果示例

毛玻璃效果(亦称磨砂效果),近两年在移动端的UI设计上越来越流行,下面这篇文章主要介绍了Android利用RenderScript实现毛玻璃模糊效果的相关资料,文中给出了详细的示例代码,需要的朋友可以参考学习,下面来一起看看吧。

五段式S型算法笔记

又因为有 v-v0= 0.5jt通式: 所以有 vm-v0= 0.5jtm 所以有4vm-4v0= 2jtm。算法1: v=2vm-v0-0.5*jt+2jt*tm-2jtm*tm。加加速度j 自己设置 已知,vmax自己设置已知;所以有4vm-4v0= 2jtm带入算法1。

qq_36658033的博客 681

Android中毛玻璃效果的两种实现Android12及以前版本

方法1 先将图片缩小,然后放大图片,再设置为控件背景以达到更模糊的效果,同时也提升模糊算法的处理效率。对比下来同样的模糊半径 ,方法1 的模糊效果更好,且方法1 的模糊半径可以设置范围更大。2.使用Android自带类RenderScript 实现。Android中毛玻璃效果主要有两种实现方式。3.FastBlurUtil.java 类。1.使用JAVA算法FastBlur实现。2.BitmapUtil.java 类。方法2 模糊半径只能设置1-25。1.activity中调用。

kk3087961的博客 3290

Robocorp+Robot Framework学习记录【初学者课程:一级课程】

以下内容均来自:https://robotframework.org/?tab=2#getting-started。通过官网的学习和本地实际安装使用体验而来,本文仅记录学习过程。 Robot Framework介绍 Robot Framework 是一个通用的开源自动化框架。它可用于测试自动化和机器人过程自动化 (RPA)。 Robot Framework环境配置及安装 具体请见:Win10环境下安装pytho、pip与Robot Framework 学习过程与等级划分 官方认为Robot Framew.

OwenDom的博客 5374

Android OpenGL ES 高斯模糊与毛玻璃效果

一、均值模糊 所谓模糊,就是让图像看不清,那么让图片看不清有哪些方法呢 缩小图片 缩小图片比较好理解,当我们将原本1080*960的图片,按照比例缩小为540*480,即缩小为原来的二分之一,但显示的时候,我们还是让他以1080*960大小显示,此时图片看起来就比原来的模糊 像素取周边像素的平均值 当某张人像的图片非常看不清楚时,我们可能会说,这张照片的人眼睛鼻子糊成一块都看不清了,其实也就是像素与像素之间变得平滑,而不是高清图的那种轮廓分明 下面,我们正在在做图片模糊处...

翻肚鱼儿的博客 2281

香橙派5B-RK3588-NPU内核升级至0.9.8:RKLLM多模态部署实战

本文详细介绍了香橙派5B-RK3588设备NPU内核升级至0.9.8版本的完整流程,重点讲解了升级的必要性、两种升级方案(预编译包安装与自行编译内核)以及RKLLM SDK的安装配置。通过实战演示多模态模型转换与推理,显著提升AI计算性能,为嵌入式AI部署提供实用指南。

salt9的博客 1025

阿里平头哥与华为芯片的比较

阿里平头哥与华为芯片代表了中国AI芯片领域的两种典型发展路径:平头哥通过兼容CUDA生态快速切入市场,以较低成本提供接近国际水平的AI算力;华为则坚持全栈自研路线,构建从芯片到框架的完整技术体系,更注重供应链安全和自主可控。从短期来看,平头哥PPU在单卡性能参数上全面超越昇腾910B,接近英伟达H20水平,且成本优势明显,有望在云服务和互联网应用领域取得更大市场份额。而华为昇腾则凭借全栈自研和端边云协同优势,在政企市场和科研领域更具竞争力。

shao.bing的专栏 3977

Android毛玻璃(磨砂)效果(静态&动态背景图模糊 收集)

果然前人栽树,后人乘凉.google搜索”Android实现动态高斯模糊效果”发现2016年转载的博客居多(或者试试英文搜索,可能时间会提前很多.),看来2016年想实现这种效果的产品多; 2014年是图片高斯模糊2015年有性能对比2016年火的就是动态高斯模糊了,不知道对于性能的影响有多大,消耗内存占用资源得有个数据show一下,当然在比较性能之前,应该先实现效果.待都尝试运行过后再弄数据.一A

TTKatrina的博客 1万+

AutoSAR实战:手把手教你配置PNC(Partial Network Cluster)实现精准休眠与唤醒

本文详细介绍了如何在AutoSAR中配置PNC(Partial Network Cluster)实现精准休眠与唤醒,通过DaVinci Configurator工具逐步指导,结合ComM模块的协同调试,优化车载电子系统的能耗管理。文章包含实战步骤、常见错误排查及功耗优化数据,适合汽车电子开发工程师参考。

weixin_33725239的博客 466

Android进阶之路 - 毛玻璃遮罩层

目录 前期提要 使用方式 完整代码 前期提要 更具体的详情请查看文末的借鉴文章之处 > <~ 模糊方案 1.Java实现,一般都是采用Stack模糊算法 2.RenderScript实现 3.Native实现 4.OpenCV或者OpenGL实现,由于其复杂度,本文暂不讨论该方案 BlurLayout自定义属性 注:只用到了blurkit:blk_fps属性,其他属性一用就...

Android、前端、小程序、后端 1万+

Python爬虫:爬取拼多多平台商品信息、销量、价格等数据

在本篇博客中,我们将深入探讨如何使用Python爬虫技术爬取拼多多平台的商品信息,包括商品的标题、销量、价格等详细数据。拼多多的商品页面通常是分页展示的,因此我们需要遍历多个页面,获取所有商品的信息。每个商品在拼多多平台上都有一个唯一的商品ID,我们可以通过该ID访问商品页面。通过以上的技术方案和代码示例,你已经掌握了如何使用Python爬虫获取拼多多平台上的商品信息、销量、价格等数据。等技术,解决拼多多平台的反爬虫机制,成功抓取我们所需的商品数据。,我们能够应对拼多多的反爬虫机制,稳定地获取到商品数据。

2201_76125261的博客 3655

商品标签识别系统:基于YOLO系列的深度学习实现

随着零售行业的快速发展和自动化需求的增长,商品标签识别技术变得越来越重要。本文详细介绍了一个完整的商品标签识别系统,该系统基于YOLO系列目标检测算法(包括YOLOv5、YOLOv8和YOLOv10),采用PySide6构建用户界面,并提供完整的训练代码和数据集处理方案。该系统能够准确识别商品标签中的关键信息,如价格、条形码、生产日期等,为零售自动化、库存管理和智能结算提供技术支持。

YOLO 348

OpenGL学习三十九:飘动的旗帜

(此节内容对应NEHE教程第11课)   目前为止我们做的例子都是平面的,这个例子是带有波动效果的, 2维图形包括X,Y两个坐标系。因此看到的是平面的。 3维图形由X,Y,Z三个坐标系构成,当Z坐标不为0时,可以产生3维的效果。一个图片或图形由许多个3维图形构成是,并且Z是变化的 就会产生波动的效果 for(int x=0; x<45; x++) { // 沿Y平面循环 f

StarFlex 4293

芯片测试:WAT、CP、FT

最近部门来了一个日本回来的同事,虽然他尽量用非常Poor的中文给我解释一些东西,其中还夹杂着一些英文让我很受挫,于是最近来学一下WAT中的常用的单词含义。直接去查缩写、查单词很难去记住,要把具体的东西放在具体的场景,引发知识的连接才会在脑子里留下一定的映像。感兴趣的一起来学习一下这篇不错的文章吧。注释是我查询记录,如有不妥,欢迎指出修正。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 5081

OpenGL -- 飘动的旗帜 (java)

<br />原创内容,转载请注明EOE论坛。       声明:因为本人的学习都是居于杨丰盛老师的《Android应用开发揭秘》一书,因此,本内容教程代码和大部分的内容都来自公布在网络上的杨老师的代码。C/C++部分可以看NeHe的OpenGL教程:http://yarin.blog.51cto.com/1130898/380974<br /> <br /> 效果图片<br /> <br />1 . 局部顶点:我们将这张图片由X、Y轴平均分割成44份,也就是有45个分割点,这些构成小方格的点就是局部顶点了。

GEOLO的专栏 4093

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

android 开源 高斯模糊_推荐一个强大的毛玻璃特效开源库

本文作者:大逗大人作者博客:https://juejin.im/user/56a4ee7b2e958a0059676953毛玻璃效果实际上是对原图片的严重劣化,突出朦胧感,一般都是通过图片的缩放+模糊算法来实现,从性能角度考虑,模糊半径不能大于25,所以要更高的模糊效果则需要进行缩放。具体实现方案有以下几种:Java实现,一般都是采用Stack模糊算法RenderScript实现Native实现O...

weixin_35711852的博客 1193

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

android opengl模糊,android 实时渲染模糊

转载知乎朱才MIUI 6已经实现了实时模糊,我来说说其技术实现吧。很久以前我们的文件夹打开和最近任务等几个地方就使用了毛玻璃效果,在技术上讲就是背景模糊。应该是比iOS 7的使用要早很多。不过那时候我们使用的是先对背景截图,再将其模糊处理,然后作为app的背景图,所以是一张静止的图片,当背景内容发生变化时模糊的图片并不会随之变化,因此比较生硬。而iOS 7的背景模糊则是实时的,当背景变化的时候,模...

weixin_39669163的博客 567

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

android 实现磨砂效果_Android 5.0 下毛玻璃(磨砂)效果如何实现?

刚刚做技术调研,可以给一些优缺点的对比.目前主流实现毛玻璃效果(高斯模糊)分大致三种方法:一 利用RenderScript接口利用现有Android结构,通过RenderScript调用底层接口实现高斯模糊计算.// Remix Blurprivate void blur(Bitmap bkg, View view) {…RenderScript rs = RenderScript.create(...

weixin_32529407的博客 1035

Android高斯模糊技术,实现毛玻璃效果

内容精炼,易读易懂,十分钟实现高斯模糊效果。

郭霖 4111

Android 毛玻璃效果的实现

Android 毛玻璃效果,主要找到了3中实现方案, 1、如果系统的api在16以上,可以使用系统提供的方法直接处理图片 if (VERSION.SDK_INT &gt; 16) {             Bitmap bitmap = sentBitmap.copy(sentBitmap.getConfig(), true);                         final R...

fanleiym的专栏 2192
上一篇: android opengl es 3d世界
下一篇: android opengl es 显示列表
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值