自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 资源 (3)
  • 收藏
  • 关注

原创 JPEG LS算法简介

JPEG-LS算法提供了无损压缩和有损压缩两种方式,并且该算法对压缩性能和实现复杂性之间做了很好的平衡,它不像JPEG2000那样有复杂的DWT操作,在JPEG-LS算法中没有DCT,FFT等计算过程,只有对数据的减法,移位以及其他简单的操作组成,十分有利于FPGA等硬件设备实现。计算当前待编码像素的局部梯度值,并对编码模式进行选择。对当前待编码像素进入游程编码模式,得到编码码流,并进入步骤7进行码流拼接。对当前待编码像素进行正常编码,得到编码码流,并进入步骤7进行码流拼接。JPEG LS算法简介。

2024-04-17 21:24:21 192

原创 FPGA压缩算法 (一)

量化器根据预定义的逼真度标准来减少映射变换器输出的精确性,以便试图去除心理视觉的冗余信息,这个过程是不可逆的,也是区分无损压缩和有损压缩的关键步骤,如果在量化的过程中有信息的丢失,那么就是有损压缩,若量化过程中没有信息的丢失那么就是无损压缩,最后的编码器用于减少编码冗余。在图像压缩算法中可以采用哈夫曼编码的方式对编码冗余的信息进行压缩,可以采用预测的方式来减少像素间冗余,可以采用量化的方式完成心理视觉冗余信息的去除。心理视觉冗余:也就是视觉上不重要的信息,因为人眼对色彩信息的敏感度是有限的。

2024-04-14 17:10:44 390

原创 怎么用Vivado做覆盖率分析

第三步:做如下设置,其中cover是我们想要设置的覆盖率的名字,这个可以自己设置,./是覆盖率信息放置的位置,这两项都可以根据自己的使用来设置。sbct是设置想要收集哪些覆盖率信息,s是行覆盖率,b是分支覆盖率,c的条件覆盖率,t是翻转覆盖率。这样在我们仿真的时候就会进行覆盖率的收集了。然后就可以看到在对应的仿真目录下生成一个xsim.codeCov的目录,因为我设置的./所以生成的信息放在了这个目录下。在做仿真的时候往往会去做代码覆盖率和功能覆盖率的分析,来保证仿真是做的比较充分完备的。

2024-04-13 10:52:38 340

原创 FPGA实现Canny算法(Verilog)

在边缘检测算法里面Sobel是比较简单的一个算法,但是其检测出来的边缘往往是比较粗的,效果不是很好,因为我们最理想的边缘肯定就是一个宽度为1的细线。Canny算法在此基础上进行了改进,通过使用边缘的梯度信息进行非最大值抑制(NMS)和利用双阈值,这些措施消除了假性边缘,提高了边缘检测的效果。

2024-04-04 22:04:14 369

原创 FPGA实现CLAHE算法(Verilog)

在介绍CLAHE算法之前必须要先提一下直方图均衡化,直方图均衡化算法是一种常见的图像增强算法,可以让像素的亮度分配的更加均匀从而获得一个比较好的观察效果。左边是原图,右边是经过直方图均衡化后图,可以看到肋骨什么的可以更加清晰的显示了出来,能够更好的观察到肋骨等位置的细节。直方图均衡化是针对全局进行处理的,所以当局部出现过亮或者过暗的时候就会影响效果。最左侧为原图,中间为直方图均衡化后的结果,最右侧为CLAHE算法的效果。但是美中不足的是总感觉有的地方太亮了,干扰到了我们的观察。直方图均衡化会增强噪声。

2024-04-04 21:22:56 646

转载 当Spinal HDL遇到TCL

原文链接:当Spinal HDL遇到TCLSpinal HDL是一门基于Scala的硬件描述语言,它可以借助Scala语言的高级特性帮助我们更快的完成开发任务。不过需要注意的是Spinal HDL是HDL而不是HLS,我们在开发的时候仍然需要做到心中有电路这样才能写出更好的代码,因为Spinal HDL本质上还是在描述电路。在使用Spinal HDL的时候不可避免的会使用别人的IP核,这个时候可以采用BlackBox进行融合该IP核。但是比如在使用xilinx的IP的时候,我们只去在SpinalHDL

2022-02-03 16:07:10 514

转载 浅析OSERDESE3

原文链接:浅析OSERDESE3在高速接口的应用场景下,我们会经常听说SerDes(Serializer-Deserializer)这个词,也就是串行器和解串器,更为通俗的讲就是进行串并转换的。在Xilinx的FPGA中提供了ISERDES(提供串行数据到并行数据的转换)和OSERDES(提供并行数据到串行数据的转换)。在7系列的FPGA里面提供了ISERDESE2和OSERDESE2这两个原语供我们使用。而在UltraScale架构中提供了ISERDESE3和OSERDESE3这两个原语。OSERDES

2022-02-02 16:41:52 1752

原创 AXI GPIO中断

代码

2020-10-25 16:40:12 883

原创 FPGA:Zedboard板子 OLED显示

代码地址:Zedboard PS端OLED显示

2020-10-18 21:27:34 395

原创 FPGA:PLL(锁相环)使用

打开添加IP的界面,即那个IP Catalog 输入clock查找PLL这个IP核,即那个Clocking Wizard。配置相应信息,在这个界面可以配置相应的要输出的时钟频率和相位等信息,这里配置为输出100MHZ。调用PLL模块`timescale 1ns / 1ns//////////////////////////////////////////////////////////////////////////////////// Company: // Engineer: /.

2020-09-23 21:36:35 1974

原创 解决ERROR: [Labtoolstcl 44-494] There is no active target available for server at localhost.

在ubuntu上使用vivado已经安装好了驱动但是下载到板子上程序时出现了ERROR: [Labtoolstcl 44-494] There is no active target available for server at localhost.这个错误可以通过gnome-system-monitor命令打开任务管理器找到hw_sever这个进程并杀死他,然后重启vivado。...

2020-09-19 11:40:04 4565 4

原创 java文本编辑器

这个文本编辑器的例子是为了练习IO和GUI编程,使用了icu4j进行编码格式推断,默认使用gbk编码打开,当icu4j推断到文档编码格式是UTF-8,UTF-16LE,UTF-16BE,GB2312,GB18030,GBK,ASCII其中之一时,使用推断的格式打开,可以很好的防止乱码。代码放到了GitHub上:https://github.com/Liu-Wei-Code/textEdit下载源码的时候,请点一下Star。...

2020-08-21 18:22:05 320

原创 用substring分割字符串

substring使用substring有两种重载形式:public String substring(int beginIndex)public String substring(int beginIndex, int endIndex)这两种形式都有一个开始索引beginIndex,在java中这个索引从0开始。第一种重载形式返回从beginIndex到结尾的字符串。第二种重载形式返回从beginIndex到endIndex-1的位置。这个范围是一个半开区间,即**[begi

2020-08-05 20:02:40 713

原创 FPGA:Zedboard开发板之点灯(PL)

开发环境为Vivado 2019.2。1新建工程打开Vivado,选择Create Project新建一个工程下面的界面直接next设置工程名及路径工程类型选为RTL工程,因为在新建工程时不指定源文件,所以勾选下面Do not 那个选项,源文件等到工程建立完毕后再指定。这里配置板卡的信息,可以在下面进行每一项的手动配置,由于我们采用的是zedboard开发板可在boards里面快速配置,不需要一个个参数手动指定,所以这里选boards。如果你的不是zedboard开发板,可以去board

2020-07-24 23:44:17 1339

原创 matplotlib输出中文显示问题

matplotlib如果直接去输出中文,那么会显示出来一个个的小方格。通过以下代码设置字体可以让其正常显示中文:from pylab import mplmpl.rcParams['font.sans-serif'] = ['FangSong']mpl.rcParams['axes.unicode_minus'] = False 代码如下:import numpy as npimport matplotlib.pyplot as plt#显示中文问题from pylab import

2020-05-26 22:40:41 164

原创 C++判断string里面的内容是不是double类型

今天有小伙伴问怎么去判读string里面的内容是不是double类型的,比如string a= "3.14"这个的内容就是double类型的,当然string的内容也应该可以是科学计数法表示double类型的数,比如string a = “1.3e2”这个也应该判定为内容为double类型。下面通过两种方法来进行判断:第一种先上代码,再解释原理。#include <iostream>#include <string>#include <cstdlib>us

2020-05-24 21:26:49 2401 1

原创 线程UI更新报错:Only the original thread that created a view hierarchy can touch its views.

当我们在线程里面更新UI的时候会报错:Only the original thread that created a view hierarchy can touch its views.如下面的代码:直接在UDP发送线程里面更新UI,就会报错,报错提示如下。这里的解决办法是把UI更新放到Handler里面。所有把上述代码的UI更新部分修改为如下图所示。...

2020-03-10 22:53:13 1322

原创 opencv读取视频实时传输到Android端

在传输视频音频的时候一般选用UDP协议,因为TCP会检查传输的数据包是否正确,当错误时要求重传,这样在观看实时视频时会造成卡顿。UDP并不会去要求重传,它会把错误的直接丢掉,而丢掉少许的数据包对我们观看视频来说并不会造成太大的影响,所以选用UDP协议。传输的Python代码如下:import cv2import socketsever = socket.socket()server=so...

2020-03-08 22:19:33 1966 4

原创 Android Studio加快gradle sync速度

在使用Android Studio时,新建项目之后下载gradle非常慢,有时候要40多分钟,通过修改为国内的源可以加快速度。是通过修改build.gradle文件来做到的。这个文件在你安装的Android Studio根目录下的,具体路径为:Android Studio\plugins\android\lib\templates\gradle-projects\NewAndroidProje...

2020-02-11 20:47:30 1008

原创 !_descriptors.empty() in function cv::BOWTrainer::add

出现这个错误,打印一下是第几个出现这个问题的,我的是130个出现问题的,那么就把第130个文件给删了,然后再找一张和它分辨率一样的补充在这里。比如:我的是这个文件出问题了那么把这个删了,最简单的方法是从他前面找一个文件来把他替换一下。...

2020-02-06 16:47:18 724

原创 快速排序

快速排序的分治法的一个典型应用,其时间复杂度是O(logN)。比如将6,12,1,4,7,15,3这7给元素进行排序。首先选出一个基准值,一般是选用第一个元素,这里也就是6。然后开始从最右边开始寻找比基准值小的元素放到基准值的左边,然后从左开始寻找比基准值大的元素放大基准值的右边。其执行过程:第一趟:基准值6 用一个变量来保存。设置两个哨兵,i=0,j=6。从右开始找比基准值小的元素,也...

2020-02-03 17:13:54 132

原创 python+opencv 静态图像人脸检测

这里使用的OpenCV人脸检测的XML文件可以从https://github.com/opencv/opencv/tree/master/data/haarcascades进行下载。需要将图片转为灰度图片。import cv2#要检测图片的路径filename = r"F:\Python\picture\003.jpg"def detect(file_name): #加载需要的XM...

2020-01-16 15:29:38 280 1

原创 python+opencv圆检测

霍夫圆检测对噪声比较敏感,所有进行霍夫圆检测的时候要先进行中值滤波。在OpenCV中是通过图像梯度来实现霍夫变换圆检测的,因此要选用cv2.HOUGH_GRADIENT这个参数。其实现分为两步:检测图像边缘,发现可能的圆心从候选圆心中计算最佳半径大小import cv2import numpy as npsmarties = cv2.imread(r"F:\Python\pict...

2020-01-07 15:16:03 4880 1

原创 python+opencv Canny边缘检测

OpenCV提供了一给非常方便的Canny函数(算法发明者:Jhon F.Canny)。Canny边缘检测算法非常复杂,其实现有5个步骤:使用高斯滤波器对图像进行降噪计算梯度在边缘上使用非最大抑制(NMS)在检测到的边缘上使用双阈值去除假阳性分析所有边缘及其之间的连接,保留真正的边缘,消除不明显的边缘import cv2#转为灰度图片img = cv2.imread(r"F:...

2020-01-06 14:24:27 327

原创 python+opencv读取视频文件

OpenCV提供了VideoCapture类和VideoWriter类来支持各种格式的视频文件的读写,在不同系统上可能支持的格式会有不同,但总的来说是都支持AVI格式的视频的。在视频没有结束之前,可以通过VideoCapture类里面的read()方法来读取每一帧图像,每帧都是一个BGR格式的图像。可以通过VideoWriter类里面的write()方法来把图像信息保存到VideoWriter...

2019-12-31 09:32:51 3205 3

原创 Qt中使用SQLite数据库

前言SQlite是一款轻量级的数据库,可以集成在其他软件中,十分适合在嵌入式系统中使用。在Qt5以上版本中可以直接使用,Qt5中带有SQlite的驱动。用法1.准备工作1.引入sql模块:在Qt的项目文件(.pro文件)中,加入sql模块 QT += sql2.添加相关头文件 #include <QSqlDatabase> #include <QSqlError...

2019-09-13 23:10:00 565

原创 python之飞机大战

最近使用python中的pygame模块写了一个飞机大战的游戏,这里记录一下编写过程。下面是实现的效果:主要需要实现的是英雄,敌机,子弹的绘制和碰撞检测。下面是部分代码:#gameSprite.pyimport pygameclass GameSprite(pygame.sprite.Sprite): ''' 初始化函数用于加载图片,默认设置图片移动速度为1 ...

2019-08-31 20:44:38 616

原创 python+opencv 获取图片中指定颜色的部分

获取图片中指定颜色的部分将图片的色彩空间转为HSV色彩空间通过比照HSV的参考表,进行获取要提取颜色的相应范围使用inRange函数进行提取使用imShow显示import cv2import numpy as npsrc = cv2.imread("D:\\myCode\\picture\\cards.png")cv2.namedWindow("input", cv2.WIN...

2019-06-22 23:00:36 30716 15

原创 python+opencv打开摄像头

打开摄像头import cv2capture = cv2.VideoCapture(0)while True: ret, frame = capture.read() frame = cv2.flip(frame,1) #镜像操作 cv2.imshow("video", frame) key = cv2.waitKey(50) #print(key...

2019-06-22 22:40:35 13737 1

原创 python+opencv读取/保存图片

读取图片导入opencv的包通过imread函数读取图片namedWindow创建一个窗口用于显示imshow将图片显示出来import cv2 as cvsrc = cv.imread("D:\\myCode\\picture\\003.jpg") #参数为图片的路径#.将imshow要显示的图片显示到哪个窗口里,是通过imshow里面的第一个参数,在这里也就是“input”这...

2019-06-21 22:45:53 3834

原创 ESP8266常用AT指令

将ESP8266与电脑连接之后,打开测试软件,注意设置端口号,我这里为com5输入AT,窗口会显示由ESP8266模块的回传“OK”输入AT+RST,会使该模块复位,软件上会显示一串字母,最后为readyAT+CWMODE=1 1是指STA模式,2为AP模式,3为AP和STA模式AT+CWLAP 这个会显示你目前可以搜到的WIFI信号AT+CWJAP=“W...

2019-05-28 16:34:02 4551

原创 tkinter学习(一):创建一个窗口

tkinter是python标准的GUI库,我们可以使用它来快速的创建一个图像化的窗口程序,并且tkinter是内置到python的安装包的,也就是说当我们安装好python后这个库就能正常使用了,只需要我们去import tkinter之后,便能愉快的开始去写我们的程序了。需要注意的是,如果你还在使用python2的话,应该导入Tkinter,即首字母大写。我们通过下面的程序去创建一个窗口:...

2019-05-02 20:51:57 2509

原创 取模与取余的不同

通常情况下,我们对取余和取模混为一谈,但是这两个是不一样的。我们在c c++ java python里面都是用%表示取模或者取余的,但是我们分别用这四门语言去计算-1%3这个式子发现结果并不一样,原因是在c c++ java里面%表示取余,而在python里面%表示取模。在我们进行计算的两个数符号一样时,取余和取模的结果是一样的,因为符号一样时利用下面公式计算出来的a/b总是非负数,也就是说这...

2019-04-26 23:00:13 4822 1

原创 Ubuntu下Qt使用ibus输入中文

sudo vim/etc/profile然后再文件尾加上exportGTK_IM_MODULE=ibusexportXMODIFIERS=@im=ibusexportQT_IM_MODULE=ibus重启Ubuntu然后我们就能在Qt里面输入中文了。...

2019-03-30 23:30:09 1698 1

转载 Ubuntu下安装Qt

本文为转载,原文链接:https://blog.csdn.net/kenjianqi1647/article/details/80151932一、开发环境ubuntu版本:Ubuntu 16.04 64位; qt5.8下载链接:https://download.qt.io/official_releases/qt/ 虚拟机:vmware 12 pro二、安装准备(不用这一步也可能安装...

2019-03-30 14:11:24 381

原创 qt读写文件中文乱码

QString path = QFileDialog::getOpenFileName(this,"OPEN","C:\\Users\\Administrator\\Desktop","TXT(*.txt)"); QTextCodec *codeC = QTextCodec::codecForName("UTF-8"); QTextCodec::ConverterState st...

2019-03-30 13:37:17 3359

原创 计算2的n次幂

在计算2的n次幂的时候,我们可以采用pow这个函数,但是当数据太大的时候显然int double 等这些数据类型并不能保存下来,就会出现问题,这个时候可以采取数组存储的方式。1.使用pow函数。pow(x,y)为计算x的y次幂。如:pow(2,3)为计算2的3次幂。2.使用数组存储。核心算法是:我们把数组的每一个元素看作数字的每一位。如:a[3]={1,2,3},我们就看作12...

2019-03-25 21:52:37 5897

原创 qt生成的exe无法直接运行(缺少一些dll文件)

当我们用qt去生成exe文件的时候,发现直接双击这个exe文件不能运行,提示缺少一些dll文件,这里我们使用qt自带的windeployqt来解决这个问题,这个windeployqt是qt提供给我们的可以去qt的安装目录下搜索一下可以看到的。1.我们设置为release版本,进行生成exe文件。2.我们把生成的exe文件拿出来,放置到一个单独的目录下,我在桌面新建一个名为test的文件...

2019-03-24 22:40:55 15486 13

原创 const与指针

在定义指针时,如果使用const进行修饰,根据const出现的位置和const出现的次数我们可以分为三种情况:一、指向常量的指针,二、常指针,三、指向常量的常指针。一、指向常量的指针。定义形式:const 类型名 * 指针名 (也可以写做类型名 const * 指针名)例如:int a = 3, b = 2; const int * p = &amp;a; (in...

2019-03-14 22:00:46 474

原创 数字雨

#include &lt;windows.h&gt;#include &lt;ctime&gt;#include &lt;cstdlib&gt;#define DEF_TIMER1 65536#define DEF_TIMER1_TIME 100LRESULT CALLBACK cb(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam...

2019-02-24 22:14:21 2903 9

planeGame.rar

此文档通过python中的pygame模块开发飞机大战游戏,通过鼠标控制我方飞机,并且自动发射子弹,当按下空格将发射超级子弹,当敌机与我方飞机相碰游戏失败,击毁敌机可增加分数。

2019-08-31

qt实现简单计算器

使用qt来开发简单的计算器,目的练习qt的简单使用熟悉qt的使用

2018-06-19

基于easyx图形的五子棋游戏

1.基于easyx的五子棋游戏,便于学习easyx图形处理。2.提高编程的一些趣味性。

2018-05-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除