用PYNQ做一个hdmi采集卡(一) 读取HDMI信号

switch底座的hdmi接口不能直接插电脑,有点头秃,然后发现PYNQ有能读HDMI的口,特想有么的可能把switch的图像读出来,慢慢写慢慢写。

简单的HDMI读取

首先来看看PYNQ-Z2对HDMI的支持功能吧
官方网站
视频子包包含了从HDMI-In端口读取、写入到HDMI-Out端口、传输数据、设置中断和操作视频帧的驱动程序的集合。

视频硬件子系统由一个HDMI-In块、一个HDMI-Out块和一个视频DMA组成。HDMI-In和HDMI-Out块也支持颜色空间转换,例如从YCrCb到RGB和返回,并改变每个像素的通道数量。
视频数据可以从HDMI-In捕获,并使用视频DMA来stream到DRAM,或从DRAM stream到HDMI-Out。

HDMI-IN
在这里插入图片描述

HDMI-OUT
在这里插入图片描述

对于我目前而言,如何读入HDMI 是需要关心的

例程

看一下例程吧

from pynq import Overlay
from pynq.lib.video import *

base = Overlay('base.bit')
### 初始化一个hdmi的实例
hdmi_in = base.video.hdmi_in
### hdmi_out = base.video.hdmi_out

# 进行配置,默认是24bit的BGR
hdmi_in.configure()

# 执行
hdmi_in.start()

# 读取输入的视频流
frame = hdmi_in.readframe()

把它放进jupyter notebook看一眼吧

在这里插入图片描述
emmm看来必须插着设备才能进行配置(好像就应该是这样喂!!!)

我把手机接了一根HDMI线输出了出来(SWITCH那个大盒子太麻烦了,等弄好了再试SWITCH)
ok!
在这里插入图片描述
现在我们来读一下输入的视频流
在这里插入图片描述
并用PIL来显示它出来看看

from PIL import Image
Image.fromarray((frame))

在这里插入图片描述
emmm好像有点问题哈,我手机的颜色明明是
在这里插入图片描述

看了一下粉色的RGB是ffd6da,也就是[255,214,218]
那个香草色的则是dad6ff,也就是
[218,214,255]

联想一下刚才说的输出是

24bit的BGR

果然是蓝色和红色通道弄反了么?

在这里插入图片描述

从维度的len我们可以看出来,frame的第一个维度是height,第二个维度是width,第三个维度则是RGB顺序,如此这般我们只需要让他的第三个维度逆序一下就可以了嘛
我们可以看到例程里面给了bgr2rgb的示例

colorspace_in = base.video.hdmi_in.color_convert
colorspace_out = base.video.hdmi_out.color_convert

bgr2rgb = [0, 0, 1,
           0, 1, 0, 
           1, 0, 0,
           0, 0, 0]

colorspace_in.colorspace = bgr2rgb
colorspace_out.colorspace = bgr2rgb

colorspace_in.colorspace

ok可以了
在这里插入图片描述

hdmi 相关函数的分析

还是官方网站
前面实例化之后,第一步是配置configure

hdmi_in.configure()

而且我们发现输出的图像是720p的,有没有可能从这里考虑一下嘞?

在这里插入图片描述
好像不太一样,又找了找发现应该是Mode这个参数。在这里插入图片描述
为了配合switch,我们给它改成1920x1080和30fps

hdmi_in.mode.width = 1920
hdmi_in.mode.height = 1080
hdmi_in.mode.fps = 30

未完待续预告

传递视频的思路是在pynq上运行一个服务器端,然后PC上运行一个客户端,从服务器端获取图像。

下一篇应该是如何搭建服务端了

广告时间
FPGA入门
FPGA实战训练精粹
Xilinx FPGA权威设计指南:基于Vivado 2018集成开发环境
Xilinx Zynq7020
FPGA设计技巧与案例开发详解(第2版)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豆沙粽子好吃嘛!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值