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

news2024/11/15 12:10:22

目录

  • 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名片。
在这里插入图片描述

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

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

相关文章

【前端学java】语法练习-工具类的封装(13)

往期回顾: 【前端学java】JAVA开发的依赖安装与环境配置 (0)【前端学 java】java的基础语法(1)【前端学java】JAVA中的packge与import(2)【前端学java】面向对象编程基础-类的使用 &#xff08…

leetcode:504. 七进制数

一、题目: 链接: 504. 七进制数 - 力扣(LeetCode) 函数原型: char* convertToBase7(int num) 二、思路 本题要将十进制数转换为二进制数,只要将十进制num数模7再除7,直到num等于0 每次将模7的结…

国际物流社交销售玩法拆解(三):打造社交电商式分销增长

这一篇,是国际物流行业社交销售玩法最后一篇,也是国际物流企业实现业务经营新增长、打造分销增长体系的新模式。以下,我们一起来拆解这一模式具体内容吧。 #01 国际物流第二曲线:社交电商 经营增长是企业的永恒话题。在客户成本…

【数据结构】树与二叉树(廿一):树和森林的遍历——先根遍历(递归算法PreOrder、非递归算法NPO)

文章目录 5.1 树的基本概念5.1.1 树的定义5.1.2 森林的定义5.1.3 树的术语 5.2 二叉树5.3 树5.3.1 树的存储结构1. 理论基础2. 典型实例3. Father链接结构4. 儿子链表链接结构5. 左儿子右兄弟链接结构 5.3.2 获取结点的算法5.3.3 树和森林的遍历1. 先根遍历(递归&am…

【Web】Flask|Jinja2 SSTI

目录 ①[NISACTF 2022]is secret ②[HNCTF 2022 WEEK2]ez_SSTI ③[GDOUCTF 2023] ④[NCTF 2018]flask真香 ⑤[安洵杯 2020]Normal SSTI ⑥[HNCTF 2022 WEEK3]ssssti ⑦[MoeCTF 2021]地狱通讯 ①[NISACTF 2022]is secret dirsearch扫出/secret 明示get传一个secret ?…

【洛谷 P3743】kotori的设备 题解(二分答案+循环)

kotori的设备 题目背景 kotori 有 n n n 个可同时使用的设备。 题目描述 第 i i i 个设备每秒消耗 a i a_i ai​ 个单位能量。能量的使用是连续的,也就是说能量不是某时刻突然消耗的,而是匀速消耗。也就是说,对于任意实数,…

国家开放大学平时作业训练题

卷代号:1400 机器人技术及应用 参考试题 一、单项选择题(每小题3分,共45分) 1.在变径轮和变形车轮的设计中,借鉴了( )的设计,使得车轮可以主动变形进行越障。 A.滑块机构 …

王者荣耀游戏

游戏运行如下: sxt Background package sxt;import java.awt.*; //背景类 public class Background extends GameObject{public Background(GameFrame gameFrame) {super(gameFrame);}Image bg Toolkit.getDefaultToolkit().getImage("C:\\Users\\24465\\D…

使用大语言模型 LLM 做文本分析

本文主要分享 传统聚类算法 LLM与嵌入算法 嵌入算法聚类 LLM的其他用法 聚类是一种无监督机器学习技术,旨在根据相似的数据点的特征将其分组在一起。使用聚类成簇,有助于解决各种问题,例如客户细分、异常检测和文本分类等。尽管传统的聚…

Django(九、choices参数的使用、多对多表的三种创建方式、Ajax技术)

文章目录 一、choices参数choices参数的用法choices 参数用法总结 二、MVC与MTV模式1.MVC2.MTV 三、多对多的三种创建方式1.全自动创建2.纯手动创建半自动创建 四、Django与Ajax1.什么是Ajax常见的场景Ajax案例 一、choices参数 在没有用到choices参数之前,我们在D…

【Linux】指令详解(一)

目录 1. 前言2. 与指令相关的知识2.1 文件2.2 路径 3. 常见指令3.1 pwd3.2 ls3.2.1 ls -l3.2.2 ls -la 3.3 mkdir3.4 cd3.5 clear3.6 touch 1. 前言 来学习一些Linux的指令和一些相关的知识。 第一步那肯定是打开自己的xshell。 这里可以修改字体和大小。 可以使用ctrl回车全…

特殊文件(XML文件)

一&#xff0c;XML文件概括 二&#xff0c;案例 <?xml version"1.0" encoding"UTF-8" ?> <!--注释&#xff1a;以上抬头声明必须写在第一不然报错--> <users><user id"1"><uame>张无忌</uame><性别&g…

[github初学者教程] 分支管理-以及问题解决

作者&#xff1a;20岁爱吃必胜客&#xff08;坤制作人&#xff09;&#xff0c;近十年开发经验, 跨域学习者&#xff0c;目前于新西兰奥克兰大学攻读IT硕士学位。荣誉&#xff1a;阿里云博客专家认证、腾讯开发者社区优质创作者&#xff0c;在CTF省赛校赛多次取得好成绩。跨领域…

【前端学java】java 中的数组(9)

往期回顾&#xff1a; 【前端学java】JAVA开发的依赖安装与环境配置 &#xff08;0&#xff09;【前端学 java】java的基础语法&#xff08;1&#xff09;【前端学java】JAVA中的packge与import&#xff08;2&#xff09;【前端学java】面向对象编程基础-类的使用 &#xff08…

深入了解原型与原型链

1、[[Prototype]] JS中的对象有一个特殊的 [[Prototype]] 内置属性&#xff0c;其实就是对于其他对象的引用。几乎所有的对象在创建时 [[Prototype]] 属性都会被赋予一个非空的值。 var anotherObject {a:2 }; // 创建一个关联到 anotherObject 的对象 var myObject Object…

【C++】使用std::vector()函数实现矩阵的加、减、点乘、点除等运算

本文通过vector&#xff08;&#xff09;函数表示矩阵的形式&#xff0c;对 加、减、点乘、点除等运算进行编码和运行&#xff0c;相应结果如下文所述。 #include <iostream> #include <vector>using namespace std;// 矩阵加法 vector<vector<int>> …

数据结构【栈】

文章目录 数据结构 栈栈的概念与结构栈接口实现 数据结构 栈 栈的概念与结构 栈是是一种特殊的线性表&#xff0c;栈的规定是只在一端插入删除数据&#xff0c;插入删除的一端叫做栈顶&#xff0c;另一端叫栈底。根据上面的特性&#xff0c;栈的数据是后入先出 栈接口实现 栈接…

pytho你-opencv划痕检测

pytho你-opencv划痕检测 这次实验&#xff0c;我们将对如下图片进行划痕检测&#xff0c;其实这个比较有难度&#xff0c;因为清晰度太差了。 我们做法如下&#xff1a; &#xff08;1&#xff09;读取图像为灰度图像&#xff0c;进行自适应直方图均衡化处理&#xff0c;增强…

【python】直方图正则化详解和示例

直方图正则化&#xff08;Histogram Normalization&#xff09;是一种图像增强技术&#xff0c;目的是改变图像的直方图以改善图像的质量。具体来说&#xff0c;它通过将图像的直方图调整为指定的形状&#xff0c;以增强图像的对比度和亮度。 直方图正则化的基本步骤如下&…

linux rsyslog综合实战1

本次我们通过rsyslog服务将A节点服务器上的单个日志(Path:/var/log/245-1.log)实时同步到B节点服务器目录下(Path:/opt/rsyslog/245) 1.rsyslog架构 2.环境信息 环境信息 HostnameIpAddressOS versionModuleNotersyslog1192.168.10.245CentOS Linux release 7.9.2009 (Core)rs…