国产高云FPGA:纯verilog实现视频图像缩放,提供6套Gowin工程源码和技术支持

本文主要是介绍国产高云FPGA:纯verilog实现视频图像缩放,提供6套Gowin工程源码和技术支持,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 1、前言
    • 免责声明
  • 2、相关方案推荐
    • 国产高云FPGA相关方案推荐
    • 国产高云FPGA基础教程
  • 3、设计思路框架
    • 视频源选择
    • OV5640摄像头配置及采集
    • 动态彩条
    • 跨时钟FIFO
    • 图像缩放模块详解
      • 设计框图
      • 代码框图
      • 2种插值算法的整合与选择
    • Video Frame Buffer 图像缓存
    • DDR3 Memory Interface
  • 4、Gowin工程1:640x480不缩放操作
  • 5、Gowin工程2:640x480缩小到300x300
  • 6、Gowin工程3:640x480缩小到100x100
  • 7、Gowin工程4:640x480缩小到300x720
  • 8、Gowin工程5:640x480缩小到1280*360
  • 9、Gowin工程6:640x480缩小到1280x720
  • 10、上板调试验证并演示
    • 准备工作
    • 静态演示
  • 11、福利:工程源码获取

国产高云FPGA:纯verilog实现视频图像缩放,提供6套Gowin工程源码和技术支持

1、前言

“苟利国家生死以,岂因祸福避趋之!”大洋彼岸的我优秀地下档员,敏锐地洞察到祖国的短板在于高精尖半导体的制造领域,于是本着为中华民族伟大复兴的中国梦贡献绵薄之力的初心,懂先生站在高略高度和长远角度谋划,宁愿背当代一世之骂名也要为祖国千秋万世谋,2018年7月,懂先生正式打响毛衣战,随后又使出恰勃纸战术,旨在为祖国先进制程半导体领域做出自主可控的战略推动;在此,请收下我一声谢谢啊!!!!!!

2019年初我刚出道时,还是Xilinx遥遥领先的时代(现在貌似也是),那时的国产FPGA还处于辣鸡段位,国产FPGA仰望Xilinx情不自禁道:你以为躲在这里就找不到你吗?没用的,你那样拉轰的男人,无论在哪里,都像黑夜里的萤火虫那样的鲜明、那样的出众,你那忧郁的眼神,稀嘘的胡渣子,神乎其技的刀法,还有那杯Dry martine,都深深的迷住了我。。。然而才短短4年,如今的国产FPGA属于百家争鸣、百花齐放、八仙过海、神仙打架、方兴未艾、得陇望蜀、友商都是XX的喜极而泣之局面,面对此情此景,不得不吟唱老人家的诗句:魏武挥鞭,东临碣石有遗篇,萧瑟秋风今又是,换了人间。。。
言归正传,目前对于国产FPGA的共识有以下几点:
1:性价比高,与同级别国外大厂芯片相比,价格相差几倍甚至十几倍;
2:自主可控,国产FPGA拥有完整自主知识产权的产业链,从芯片到相关EDA工具
3:响应迅速,FAE技术支持比较到位,及时解决开发过程中遇到的问题,毕竟中文数据手册。。
4:采购方便,产业链自主可控,采购便捷

本文使用国产高云GW2A-LV18PG484C7/I6型号的FPGA做纯verilog实现视频图像缩放,视频源有两种,分别对应开发者手里有没有摄像头的情况,一种是使用廉价的OV5640摄像头;如果你手里没有OV5640摄像头或者FPGA开发板没有摄像头输入接口,则可使用代码内部生成的动态彩条模拟摄像头视频,视频源的选择通过代码顶层的`define宏定义进行选择,上电默认选择OV5640摄像头作为输入源;FPGA首先使用纯verilog实现的i2c控制器配置ov5640摄像头,将其分辨率配置为640x480@60Hz,同时生成用纯verilog实现动态彩条,其分辨率为640x480@60Hz;FPGA采集到输入视频后,首先将图像送入缓冲FIFO中做跨时钟域处理,即用输出1280x720@60Hz的屏幕背景分辨率作为读FIFO的时钟,这样可以确保在各种分辨率的图像缩放操作中,送入图像缩放模块的时钟时钟是够大的,也是带宽满足的一种操作;随后将视频送入纯verilog实现的图像缩放模块做图像缩放操作,该模块很简单,只需给出输入分辨率和输出分辨率即可,不需要去管缩放比例之类的问题,一般而言,输入分辨率是不变的,只需要改变输出分辨率即可;缩放后的视频,其原有的时序已经被完全打乱,所以需要调用高云官方的Video Frame Buffer IP核将视频送到外接DDR3中做三帧缓存;调用高云官方的DDR3 Memory Interface IP核实现图像数据到DDR3颗粒的搬运工作,类似于Xilinx的MIG;然后读出视频送VGA输出时序同步像素数据,VGA输出分辨率为1280x720@60Hz;缩放后的视频相当于叠加显示在1280x720的背景之上;最后调用高云官方的DVI TX IP核实现RGB视频到HDMI视频的转换,输出显示器显示;

提供5套Gowin-V1.9版本的工程源码;5套工程的区别在于缩放后的输出分辨率不同,分别如下:
第一套Gowin工程:输入分辨率640x480;输出分辨率640x480;不做缩放操作;
第二套Gowin工程:输入分辨率640x480;输出分辨率300x300;做缩小操作;
第三套Gowin工程:输入分辨率640x480;输出分辨率100x100;做缩小操作;
第四套Gowin工程:输入分辨率640x480;输出分辨率300x720;做不规则的缩放操作;
第五套Gowin工程:输入分辨率640x480;输出分辨率1280x360;做不规则的缩放操作;
第六套Gowin工程:输入分辨率640x480;输出分辨率1280x720;做放大操作;

本文详细描述了国产高云FPGA图像视频采集系统的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做学习提升,可应用于医疗、军工等行业的高速接口或图像处理领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网、国产高云FPGA官网、紫光同创FPGA官网等等),若大佬们觉得有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,禁止用于商业用途,若由于读者或粉丝自身原因用于商业用途所导致的法律问题,与本博客及博主无关,请谨慎使用。。。

2、相关方案推荐

国产高云FPGA相关方案推荐

鉴于国产高云FPGA的优异表现和市场需求,我专门开设了一个人国产高云FPGA专栏,里面收录了基于国产高云FPGA的图像处理、UDP网络通信、GT高速接口、PCIE等博客,感兴趣的可以去看看,博客地址:点击直接前往

国产高云FPGA基础教程

高云FPGA开发软件Gowin的下载、安装、Licence共享,工程搭建、代码添加、综合、编译、下载、各种IP的调用、配置、使用等基础操作,是做高云FPGA开发的基本功,当然,如果你已是有经验的工程师,则可以省略这一步,为此,我专门开设了专栏,详细讲述国产高云FPGA基础教程,甚至可以说是保姆级的教程,专栏地址如下:
点击直接前往

3、设计思路框架

本文使用国产高云GW2A-LV18PG484C7/I6型号的FPGA做纯verilog实现视频图像缩放,视频源有两种,分别对应开发者手里有没有摄像头的情况,一种是使用廉价的OV5640摄像头;如果你手里没有OV5640摄像头或者FPGA开发板没有摄像头输入接口,则可使用代码内部生成的动态彩条模拟摄像头视频,视频源的选择通过代码顶层的`define宏定义进行选择,上电默认选择OV5640摄像头作为输入源;FPGA首先使用纯verilog实现的i2c控制器配置ov5640摄像头,将其分辨率配置为640x480@60Hz,同时生成用纯verilog实现动态彩条,其分辨率为640x480@60Hz;FPGA采集到输入视频后,首先将图像送入缓冲FIFO中做跨时钟域处理,即用输出1280x720@60Hz的屏幕背景分辨率作为读FIFO的时钟,这样可以确保在各种分辨率的图像缩放操作中,送入图像缩放模块的时钟时钟是够大的,也是带宽满足的一种操作;随后将视频送入纯verilog实现的图像缩放模块做图像缩放操作,该模块很简单,只需给出输入分辨率和输出分辨率即可,不需要去管缩放比例之类的问题,一般而言,输入分辨率是不变的,只需要改变输出分辨率即可;缩放后的视频,其原有的时序已经被完全打乱,所以需要调用高云官方的Video Frame Buffer IP核将视频送到外接DDR3中做三帧缓存;调用高云官方的DDR3 Memory Interface IP核实现图像数据到DDR3颗粒的搬运工作,类似于Xilinx的MIG;然后读出视频送VGA输出时序同步像素数据,VGA输出分辨率为1280x720@60Hz;缩放后的视频相当于叠加显示在1280x720的背景之上;最后调用高云官方的DVI TX IP核实现RGB视频到HDMI视频的转换,输出显示器显示;

提供5套Gowin-V1.9版本的工程源码;5套工程的区别在于缩放后的输出分辨率不同,分别如下:
第一套Gowin工程:输入分辨率640x480;输出分辨率640x480;不做缩放操作;
第二套Gowin工程:输入分辨率640x480;输出分辨率300x300;做缩小操作;
第三套Gowin工程:输入分辨率640x480;输出分辨率100x100;做缩小操作;
第四套Gowin工程:输入分辨率640x480;输出分辨率300x720;做不规则的缩放操作;
第五套Gowin工程:输入分辨率640x480;输出分辨率1280x360;做不规则的缩放操作;
第六套Gowin工程:输入分辨率640x480;输出分辨率1280x720;做放大操作;
设计框图如下:
在这里插入图片描述
注意:框图中的数字表示数据流向的顺序;

视频源选择

视频源有两种,分别对应开发者手里有没有摄像头的情况,一种是使用廉价的OV5640摄像头;如果你手里没有OV5640摄像头或者FPGA开发板没有摄像头输入接口,则可使用代码内部生成的动态彩条模拟摄像头视频,视频源的选择通过代码顶层的`define宏定义进行选择,上电默认选择OV5640摄像头作为输入源;视频源选择如下:
在这里插入图片描述
视频源选择逻辑代码部分如下:
在这里插入图片描述
选择逻辑如下:
当(注释) define COLOR_IN时,输入源视频是OV5640;
当(不注释) define COLOR_IN时,输入源视频是动态彩条;

OV5640摄像头配置及采集

OV5640摄像头需要i2c配置才能使用,需要将DVP接口的视频数据采集为RGB565或者RGB888格式的视频数据,这两部分均用verilog代码模块实现,代码位置如下:
在这里插入图片描述
其中摄像头配置为分辨率1280x720,如下:
在这里插入图片描述
摄像头采集模块支持RGB565和RGB888格式的视频输出,可由参数配置,如下:
在这里插入图片描述
RGB_TYPE=0输出本RGB565格式;
RGB_TYPE=1输出本RGB888格式;
设计选择RGB888格式;

动态彩条

动态彩条可配置为不同分辨率的视频,视频的边框宽度,动态移动方块的大小,移动速度等都可以参数化配置,以工程1为例,配置为辨率1280x720,动态彩条模块代码位置和顶层接口和例化如下:
在这里插入图片描述
在这里插入图片描述

跨时钟FIFO

调用高云官方的FIFO;跨时钟FIFO的作用是为了解决跨时钟域的问题,当视频不进行缩放时不存在视频跨时钟域问题,但当视频缩小或放大时就存在此问题,用FIFO缓冲可以使图像缩放模块每次读到的都是有效的输入数据,注意,原视频的输入时序在这里就已经被打乱了;
关于高云官方FIFO IP的更多详细讲解,请参考我的专栏:高云FPGA开发基础教程,专栏地址如下:
点击直接前往

图像缩放模块详解

因为我们的QT上位机目前只支持1280x720,所以才需要缩放,即从输入的1920x1080分辨率缩小为1280x720;用笔记本电脑模拟HDMI视频输入源;

设计框图

本设计将常用的双线性插值和邻域插值算法融合为一个代码中,通过输入参数选择某一种算法;代码使用纯verilog实现,没有任何ip,可在Xilinx、Intel、国产FPGA间任意移植;代码以ram和fifo为核心进行数据缓存和插值实现,设计架构如下:
在这里插入图片描述
视频输入时序要求如下:
在这里插入图片描述
输入像素数据在dInValid和nextDin同时为高时方可改变;
视频输出时序要求如下:
在这里插入图片描述
输出像素数据在dOutValid 和nextdOut同时为高时才能输出;

代码框图

代码使用纯verilog实现,没有任何ip,可在Xilinx、Intel、国产FPGA间任意移植;
图像缩放的实现方式很多,最简单的莫过于Xilinx的HLS方式实现,用opencv的库,以c++语言几行代码即可完成,关于HLS实现图像缩放请参考我之前写的文章HLS实现图像缩放
网上也有其他图像缩放例程代码,但大多使用了IP,导致在其他FPGA器件上移植变得困难,通用性不好;相比之下,本设计代码就具有通用性;代码架构如图;
在这里插入图片描述
其中顶层接口部分如下:
在这里插入图片描述

2种插值算法的整合与选择

本设计将常用的双线性插值和邻域插值算法融合为一个代码中,通过输入参数选择某一种算法;
具体选择参数如下:

input  wire i_scaler_type //0-->bilinear;1-->neighbor

通过输入i_scaler_type 的值即可选择;

输入0选择双线性插值算法;
输入1选择邻域插值算法;

关于这两种算法的数学差异,请参考我之前写的文章HLS实现图像缩放

Video Frame Buffer 图像缓存

调用高云官方的Video Frame Buffer IP核将视频送到外接DDR3中做三帧缓存;该部分是图像采集显示系统的重点核难点,如果是其他FPGA,则需要写一大堆代码才能实现,还要调试,花费时间和精力很多,但高云FPGA则轻松实现了改功能,因为人家直接做成了IP,即Video Frame Buffer;这里简单介绍一下该IP,因为高云有详细的中文手册说明该IP的使用,手册我也放在了资料包里;
我对该IP的配置只适用于我的设计,如果你要修改IP的配置的话,可以按照如下方式修改,然后重新生成IP:
在这里插入图片描述
Video Frame Buffer IP配置如下:
在这里插入图片描述
关于Video Frame Buffer IP的更多详细讲解,请参考我的专栏:高云FPGA开发基础教程,专栏地址如下:
点击直接前往

DDR3 Memory Interface

调用高云官方的DDR3 Memory Interface IP核实现图像数据到DDR3颗粒的搬运工作,类似于Xilinx的MIG;DDR3 Memory Interface IP配置如下:
在这里插入图片描述
关于DDR3 Memory Interface IP的更多详细讲解,请参考我的专栏:高云FPGA开发基础教程,专栏地址如下:
点击直接前往

4、Gowin工程1:640x480不缩放操作

开发板FPGA型号:国产高云–GW2A-LV18PG484C7/I6;
开发环境:Gowin-V1.9
输入:OV5640摄像头或动态彩条,分辨率640x480;
缩放前的视频分辨率:640x480;
缩放后的视频分辨率:640x480;
输出:HDMI,在1280x720的背景下叠在缩放后的640x480视频;
工程作用:视频经过缩放模块,但不进行缩放操作,即一比一缩放;
工程代码架构如下:
在这里插入图片描述
工程的资源消耗和功耗如下:
在这里插入图片描述
我发布的工程均已编译通过,如下:
在这里插入图片描述

5、Gowin工程2:640x480缩小到300x300

开发板FPGA型号:国产高云–GW2A-LV18PG484C7/I6;
开发环境:Gowin-V1.9
输入:OV5640摄像头或动态彩条,分辨率640x480;
缩放前的视频分辨率:640x480;
缩放后的视频分辨率:300x300;
输出:HDMI,在1280x720的背景下叠在缩放后的300x300视频;
工程作用:视频缩小操作;
工程代码架构、工程的资源消耗和功耗等与第4章节的内容基本一致;

6、Gowin工程3:640x480缩小到100x100

开发板FPGA型号:国产高云–GW2A-LV18PG484C7/I6;
开发环境:Gowin-V1.9
输入:OV5640摄像头或动态彩条,分辨率640x480;
缩放前的视频分辨率:640x480;
缩放后的视频分辨率:100x100;
输出:HDMI,在1280x720的背景下叠在缩放后的100x100视频;
工程作用:视频缩小操作;
工程代码架构、工程的资源消耗和功耗等与第4章节的内容基本一致;

7、Gowin工程4:640x480缩小到300x720

开发板FPGA型号:国产高云–GW2A-LV18PG484C7/I6;
开发环境:Gowin-V1.9
输入:OV5640摄像头或动态彩条,分辨率640x480;
缩放前的视频分辨率:640x480;
缩放后的视频分辨率:300x720;
输出:HDMI,在1280x720的背景下叠在缩放后的300x720视频;
工程作用:视频做不规则的缩放操作;
工程代码架构、工程的资源消耗和功耗等与第4章节的内容基本一致;

8、Gowin工程5:640x480缩小到1280*360

开发板FPGA型号:国产高云–GW2A-LV18PG484C7/I6;
开发环境:Gowin-V1.9
输入:OV5640摄像头或动态彩条,分辨率640x480;
缩放前的视频分辨率:640x480;
缩放后的视频分辨率:1280360;
输出:HDMI,在1280x720的背景下叠在缩放后的1280
360视频;
工程作用:视频做不规则的缩放操作;
工程代码架构、工程的资源消耗和功耗等与第4章节的内容基本一致;

9、Gowin工程6:640x480缩小到1280x720

开发板FPGA型号:国产高云–GW2A-LV18PG484C7/I6;
开发环境:Gowin-V1.9
输入:OV5640摄像头或动态彩条,分辨率640x480;
缩放前的视频分辨率:640x480;
缩放后的视频分辨率:1280x720;
输出:HDMI,在1280x720的背景下叠在缩放后的1280x720视频;
工程作用:视频做放大操作;
工程代码架构、工程的资源消耗和功耗等与第4章节的内容基本一致;

10、上板调试验证并演示

准备工作

你需要有以下装备才能移植并测试该工程代码:
1:FPGA开发板;
2:OV5640摄像头,如果没有也可以,就选择动态彩条;
3:HDMI传输线;
4:HDMI显示,要求分辨率支持1280x720;
连接如下:
在这里插入图片描述

静态演示

第一套Gowin工程:输入分辨率640x480;输出分辨率640x480;不做缩放操作;输出如下:
在这里插入图片描述
第二套Gowin工程:输入分辨率640x480;输出分辨率300x300;做缩小操作;
在这里插入图片描述
第三套Gowin工程:输入分辨率640x480;输出分辨率100x100;做缩小操作;
在这里插入图片描述
第四套Gowin工程:输入分辨率640x480;输出分辨率300x720;做不规则的缩放操作;
在这里插入图片描述
第五套Gowin工程:输入分辨率640x480;输出分辨率1280x360;做不规则的缩放操作;
在这里插入图片描述
第六套Gowin工程:输入分辨率640x480;输出分辨率1280x720;做放大操作;
在这里插入图片描述

11、福利:工程源码获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
在这里插入图片描述

这篇关于国产高云FPGA:纯verilog实现视频图像缩放,提供6套Gowin工程源码和技术支持的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/421245

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo