PotatoPie 4.0 实验教程(33) —— FPGA实现摄像头视频图像叠加

news2024/11/19 11:27:38

链接直达

https://item.taobao.com/item.htm?ft=t&id=776516984361

什么是视频水印?

视频水印就是图像叠加,跟画中画,或者是OSD是一样的原理,都是在视频的行场数据流上进行替换操作,比如叠加可以直接用水印图的数据替掉摄像头的数据,也可以将水印图的数据与摄像头的数据进行运算后再替换原有的摄像头数据。

图片转MIF

首先我们需要一个水印图片,这个水印图片如何让FPGA可以读取呢?不带SOC的FPGA不太适合直接解析jpg,png图片,因此我们可以先在PC上将图片处理成.mif格式,.mif是安路支持的FPGA ROM的初始化格式。

我们提供python和安路版本的图片转MIF的转换代码。

python实现图片转MIF源码

从图片生成叠加MIF的python代码,支持所有常见图片格式(bmp,png, jpeg):

PotatoPie 4.0 实验教程(32) —— FPGA实现摄像头视频图像叠加-Anlogic-安路论坛-FPGA CPLD-ChipDebug

这段代码实现了将图片转换为Memory Initialization File(MIF)格式的功能。具体来说,它会从指定的图片文件中读取像素数据,并将其转换为适合存储在存储器中的格式。代码首先获取当前.py文件所在的目录,然后构建图片文件的路径,从而读取名为icmaker.png的图片文件。接着,它会打开这个图片文件,并获取其大小。然后,代码会清空之前同名的MIF文件(如果存在),并打开一个用于写入的MIF文件。在MIF文件中,代码会按照指定的格式写入图片的像素数据,其中包括像素的地址和对应的RGB值。最终,生成的MIF文件可以用于初始化存储器,用于在数字电路中存储图片数据。

MATLAB实现图片转MIF源码

PotatoPie 4.0 实验教程(32) —— FPGA实现摄像头视频图像叠加-Anlogic-安路论坛-FPGA CPLD-ChipDebug

FPGA工程分析

工程层次图

demo18相比,只是多了一个watermark的模块,也就是下面这一段代码,在从SDRAM读出来之后,经它处理后再输出hdmi_tx模块。

watermark代码分析

模块代码比较简单,watermark.v中我们先例化一个存储水印图片的ROM

img_36_128_rom u_img_36_128_rom( 
  .doa  ({r_d0,g_d0,b_d0}), 
  .addra  (rd_addr     ), 
  .clka  (i_clk       ), 
  .rsta  (1'b0       ) 
);

ROM的定义文件img_36_128_rom中指定了mif文件的路径。

.INIT_FILE("./icmaker_36_128_3.mif"),

然后控制RGB数据的输出,选择是摄像头数据还是水印数据,o_de1为有效的时候输出水印数据

assign o_r = o_de1 ? r_d0 : r_d1;

assign o_g = o_de1 ? g_d0 : g_d1;

assign o_b = o_de1 ? b_d0 : b_d1;

那么如何控制水印数据呢?下面的代码即为控制代码,上面的o_de1就是下面代码中的de_d0延时后的信号。

上面的BEGIN_XH_ACTIVE这些参数在文件的头部有定义,详见代码如下片段。

parameter  H_ACTIVE_IMG   = 1280; //图像宽度                              
parameter  V_ACTIVE_IMG   = 720;  //图像高度
parameter  H_ACTIVE     = 128;  //水印区域宽度                              
parameter  V_ACTIVE     = 36;   //水印区域高度
parameter  BEGIN_X          = 511;  //水印起始坐标
parameter  BEGIN_Y          = 360;  //水印起始坐标

管脚约束

与PotatoPie 4.0 实验教程(18) —— FPGA实现OV5640摄像头采集以SDRAM作为显存进行HDMI输出显示相同,不作赘述。

时序约束

与PotatoPie 4.0 实验教程(18) —— FPGA实现OV5640摄像头采集以SDRAM作为显存进行HDMI输出显示相同,不作赘述。

实验结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1636910.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python小练】求斐波那契数列第n个数

题目 输出斐波那契数列第n个数。 分析 首先我们要知道,斐波那契数列,这个数列从第三位开始等于前两个数的和,要知道数列第n个数(n>2),就要知道其前两相的值,着就需要用到递归了。来看一下吧…

Java面试重点之反射机制

一、 反射是什么? 允许程序在运行时查询和操作对象的类型信息。通过反射,程序能够在运行时获取对象的类定义信息,如类的名称、方法、字段、注解等,并且可以动态地调用对象的方法或访问其字段,而无需在编译时具体知道对…

【LAMMPS学习】八、基础知识(5.3)Body particles体粒子

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

C语言:数据结构(双向链表)

目录 1、双向链表的结构2、顺序表和双向链表的优缺点分析3、双向链表的实现 1、双向链表的结构 注意:这⾥的“带头“跟前面我们说的“头节点”是两个概念,实际前面的在单链表阶段称呼不严谨,但是为了更好的理解就直接称为单链表的头节点。 带…

上位机开发PyQt(五)【Qt Designer】

PyQt5提供了一个可视化图形工具Qt Designer,文件名为designer.exe。如果在电脑上找不到,可以用如下命令进行安装: pip install PyQt5-tools 安装完毕后,可在如下目录找到此工具软件: %LOCALAPPDATA%\Programs\Python\…

2024人工智能“百模大战“,竞争格局分析

中国“百模大战”竞争格局分析 大模型是一个重资源禀赋和高进入门槛的赛道,“百模大战”是一场重投入和高消耗的持久战役。“百模大战”的上半场是资源和技术的碰撞,入局企业需要长久的资源支持获得高密度的人才、高质量的数据和大规模的算力&#xff0c…

Vue.js课后练习(登录注册和大小比较)

第一题 请编写登录页面和注册页面&#xff0c;通过动态组件实现动态切换页面中显示的组件&#xff0c;效果如图1和图2所示。 图1 登录页面 图2 注册页面 代码&#xff1a; my.vue代码: <template>登录 </template><script setup> </script><st…

再谈有效地访问Github

文章目录 1. 知识回顾2. 问题描述3. 问题解决3.1 Mac系统3.2 Windows系统4. 内容总结1. 知识回顾 我们在之前的内容中介绍过如何有效地访问Github。如果大家忘记的话可以点击这里查看。之前的内容主要偏重于问题的分析和解决的思路,有些朋友看了后还是不清楚如何解决问题。 …

半监督节点分类:标签传播和消息传递

基础概念回顾 传统图机器学习的特征工程——节点层面&#xff0c;连接层面&#xff0c;全图层面 节点层面&#xff1a;信用卡欺诈 连接层面&#xff1a;推荐可能认识的人 全图层面&#xff1a;预测分子结构 半监督节点分类 半监督节点分类&#xff1a;用已知标签节点预测未…

【Java EE】多线程(二)Thread 类与常用方法

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更…

低代码工业组态数字孪生平台

2024 两会热词「新质生产力」凭借其主要特征——高科技、高效能及高质量&#xff0c;引发各界关注。在探索构建新质生产力的重要议题中&#xff0c;数据要素被视为土地、劳动力、资本和技术之后的第五大生产要素。数据要素赋能新质生产力发展主要体现为&#xff1a;生产力由生产…

linux安装Redis 7.2.4笔记

一.保姆级安装 1.下载Redis 7.2.4安装包 sudo wget https://download.redis.io/releases/redis-7.2.4.tar.gz2.解压&#xff0c;可以指定 sudo tar -zvxf redis-7.2.4.tar.gz 3.检测并安装 GCC 编译器&#xff1a; yum 是基于 Red Hat 的 Linux 发行版&#xff08;如 CentOS、…

问卷新项目新玩法,一个2-5元,零基础,日赚50-200元零花钱,适合宝妈

问卷调研是许多机构或企业为了获取大数据技术结论&#xff0c;进行抽样调查&#xff0c;进而针对特定人群进行付费调查个人行为。问卷调查内容通常涉及新产品&#xff0c;例如通过比较不同类别的商品&#xff0c;展示某些产品的优势和劣势。我们都喜欢某款手机&#xff0c;究竟…

Docker在linux安装步骤超详细

官网 Install Docker Engine on CentOS | Docker Docs yum -y install gcc yum -y install gcc-c 安装工具 sudo yum install -y yum-utils 设置国内的镜像 yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yu…

【配置】Docker搭建JSON在线解析网站

云服务器打开端口8787 连接上docker运行 docker run -id --name jsonhero -p 8787:8787 -e SESSION_SECRETabc123 henryclw/jsonhero-webhttp://ip:8787访问 Github&#xff1a;地址

AutoCAD 2025 for mac/win:设计未来,触手可及

在数字化时代&#xff0c;设计不再局限于纸笔之间&#xff0c;而是跃然于屏幕之上&#xff0c;AutoCAD 2025正是这一变革的杰出代表。无论是Mac用户还是Windows用户&#xff0c;AutoCAD 2025都以其卓越的性能和出色的用户体验&#xff0c;成为了CAD设计绘图领域的佼佼者。 Aut…

Linux修改文件权限命令 chmod

【例子引入】 以下面命令为例&#xff1a; chmod 777 Random.py 当写入下面名为Random.py的代码后&#xff1a; 如果直接运行&#xff0c;会显示权限不够 当输入 chmod 777 Random.py 更改权限后&#xff0c;才能够正常运行 在终端中输入 这条命令是关于Linux或Unix-like系…

一周学会Django5 Python Web开发 - Django5 ORM数据库事务

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计50条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

Linux基础part-3

1、Linux一般系统查看类命令 【stat】命令 格式&#xff1a;stat [option] file显示文件的元数据信息&#xff0c;包括文件的权限、拥有者、大小、修改时间等。eg&#xff1a;stat myfile.txt 【file】命令 用于确定文件类型格式&#xff1a;file [option] filefile myfile.t…