Day8_上午_图形化显示

接着摄像头的工作继续,做一个图形化显示的界面

最终是在vga上面进行操作

最终效果:在显示屏中央形成一个黑框,其中图像都会变成黑白的,即把RGB色彩变成灰度阈值去显示,

     同时右上角显示$100\times100$像素的图片,在PS端控制,显示神经网络识别到的数字

实现方式:用 cmos configuration 去配置 ov5640 摄像头,让摄像头流出来的数据中央有一个灰度识别的框

 

 

VGA显示原理:总体来说是一个扫描的原理

行列两个计数器各自进行计数,这两个计数器可以在场同步信号开始之前,表示出整个 vga 显示屏的像素坐标

所以数像素,确定四个点位置,从而确定黑框位置

RGB转灰色有公式:

$Gray = 0.299 \times R + 0.587\times G + 0.114 \times B$

实现框图的效果,需要写一个 cmos 的模块,AI 提示词如下:

请用 Verilog 编写一个图像预处理模块 cmos_data,功能是对 Ov5640 摄像头输入的
RGB565 视频流做局部灰度二值化处理。
模块接口:
输入:srstn(低电平复位)、m_pclk(像素时钟)、m_data(RGB565像素)、mvs
(场同步)、m_href(行同步)、m_wr_en(数据有效)、bin_theta(二值化阀值)
输出:vid_data(处理后视频数据)
功能要求:
根据m_vs和m_href产生行列计数器(行1024 列复位),在帧内统计当前像素坐标
对输入的 RGB565数据计算灰度值:Gray=R×0.299+G×0.587+B×0.114,使用整数运算近似,
我的阈值是100
在以屏幕中心附近的一个固定112×112像素子窗口区域内,图像分辨率为1024×720,将灰
度值与bin_theta比较,低于阀值输出全白,高于或等于输出全黑,窗口外保持原像素不变
注意跨时钟域、计数器边界的正确复位逻辑
提示词

他实现的功能就是根据行场同步去给他一个产生一个位置坐标,然后根据当前像素坐标再去计算黑框区域的灰度值

由于神经网络是 $112\times112$ 像素,所以让他黑框也就是 $112\times112$ 像素

设定了一个阈值,高于该阈值的则输出全黑,低于阈值输出全白


工程方面, 是在“摄像头”工程模块上直接添加

Add Sources 加入上面生成的代码,如记 coms_data.v

在 Block Design 加入这个 Module 

删除摄像头和video_in的线

image

m_data 的流向如下图

image

coms_data 其他部分跟 ov5640 连的一致,像素时钟 pclk 对应相连,reset 对应相连

image

 阈值 bin_theta 要新建一个常数去相连,

常数模块位数 Width 跟 bin_theta 一致为 $8$ 位,阈值 Val 可设定为 $100$

image

image


 OK啊就可以对 design 进行 Generate 了

就会发现刚才在外面的 cmos_data 到里面去了

image


 呃这边说个事啊

他Generate 比特流的时候,就会产生一个 .bit 文件

而在这里 Program Device 的时候,会让选择一个 bit 文件,就是这个 bit 文件

image

一般来说,这个 bit 会存在于这个文件夹

image

 看一下对应的更新时间就是了

 

image

image

 

posted @ 2026-07-28 09:15  little_sheep_xiaoen  阅读(6)  评论(0)    收藏  举报