自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我本傲骄的博客

Time is a choice.

  • 博客(131)
  • 资源 (4)
  • 收藏
  • 关注

原创 Window10下安装tensorflow、Pyrotch、PaddlePaddle

1、tensorflow、Pytorch、PaddlePaddle与cuda、cudnn版本对应1.1 tensorflow来自于tensorflow官方1.2 Pytorch更详细版本对应测试1.3 PaddlePaddleGPU版本支持CUDA 9.0/10.0/10.1/10.2/11.0,且仅支持单卡安装直接看Paddle官网安装文档,写的很清楚2、Windows10安装cuda、cudnn安装过程网上有很多,我不再赘述了。但需要注意的是环境变量的配置(很重要)C:\Prog

2021-05-13 21:38:06 455

原创 搭建自己的pdf在线预览工具

文章首发于我的个人博客1、前言​ 在日常工作学习过程中,我们常常将自己的学习笔记和成果记录下来, 之后想通过网络将这些资料分享给其他人.如果你有个人博客,那么可以将你的总结用markdown写下来然后发布在你的网站上. 但是如果你没有自己的博客, 或者有些资料内容markdown并不能完整的表达出来, 又或者你的资料是word、ppt等格式的文件, 又或者你的你需要将你的简历以pdf的格式放在网上, 此时你可能突然有想要将以上提到的这些资料都转为pdf的格式,然后放在网络上让别人访问.然而找了一圈发现

2021-04-04 16:22:07 1743

原创 项目——排队叫号系统设计

文章首发于我的个人博客github项目地址:https://github.com/Kevinnan-teen/MCU-Projects-Collection【项目对你有帮助的话,就star/fork走一波吧!】类似食堂取餐的模式。首先,学生排队,服务员使用键盘给顾客分配号码,按下确定键,数码管显示当前队列中的人数、刚刚进入队列的号码,并通过串口通信的方式将队列人数和当前分配的号码发送给从机,从机将数据显示在1602液晶屏上。另外,主机通过键盘按键选择取餐功能,按下出队键,叫到要取餐的号码,并通过语音播

2021-03-17 11:41:31 4886

原创 FFmpeg的API使用篇(三):提取纯音频/纯画面

1、前言本文将在上一篇文章FFmpeg的API使用篇(二):转封装(不涉及转码)的基础上,拓展从视频中提取纯音频或者纯视频的功能。依旧不涉及转码操作,仅仅是将音频流提取出来,然后封装成对应的格式。比如从mp4格式的视频中提取音频,并保存为aac格式。或者提取纯视频转为mp4格式。2、提取流程提取音频流的过程和视频转封装的过程大部分都类似。只不过,我们需要的只是音频或者只是视频而已。因此,与转封装不同的是:首先,在复制编码参数(AVCodecParameters)时,我们只需要复制视频或者音频。而在使用

2021-02-22 10:32:32 1573 1

原创 FFmpeg的API使用篇(二):转封装(不涉及转码)

1、前言本文不涉及音频和视频的编解码操作,仅仅是转换视频的封装格式,比如mp4转flv,mp4转mkv等,也可以认为仅仅是为文件重命名,更改了文件后缀而已。由于不涉及音视频的转码操作,因此此程序处理速度极快。需要知道的是,音视频编解码的算法非常复杂,占用了很多的CPU,这部分也消耗了是视频转码的绝大部分时间。关于视频转码的API使用方法将在之后的博客中详细介绍,本文只关注于转封装。只转封装的工作原理如下图所示:2、转封装流程3、代码类头文件代码(remuxing.h)// Copyri

2021-02-22 10:32:06 1195

原创 FFmpeg的API使用篇(一):获取视频信息

1、前言从这本文开始,我将逐步深入FFmpeg API的使用方法,而不仅仅使用ffmpeg命令行这种虽然简便强大但是有一定局限性的方法。使用命令行我们可以轻松完成自己的一部分特定工作,但是如果我们要使用FFmpeg将处理的结果返回给其他用户,或者我们的项目中需要嵌入FFmpeg,那么我们就必须要学会使用FFmpeg提供的API写代码完成工作。回到本文主要内容。首先,我们对视频进行分析之前经常需要知道媒体文件所包含的视频流信息,比如文件格式、播放时长、视频码率、视频帧率、视频编解码格式、音频码率、音频采样

2021-02-22 10:31:26 3944

原创 FFmpeg常用结构体分析(四):AVPacket

1、AVPacket简介AVPacket保存了解封装之后,解码之前的数据(仍然是压缩后的数据)和关于这些数据的一些附加信息,如显示时间戳(pts)、解码时间戳(dts)、数据时长、所在媒体流的索引等。对于视频(Video)来说,AVPacket通常包含一个压缩的Frame,而音频(Audio)则有可能包含多个压缩的Frame。并且,一个Packet有可能是空的,不包含任何压缩数据,只含有side data(side data,容器提供的关于Packet的一些附加信息。例如,在编码结束的时候更新一些流的参

2021-02-22 10:30:53 1370

原创 FFmpeg常用结构体分析(三):AVCodecParameters

AVSream中我们可以使用codec得到AVCodecContext指针,该结构体代表了AVStream中持有的codec相关的上下文,包含了众多编解码器需要的参数信息。一个AVStream对应一个AVCodecContext指针。但是,如果你使用较高的FFmpeg版本就应该发现,codec成员已经不受支持,也就是在AVStream中该成员已经被废弃,而且,AVCodecContext由于太过复杂,FFmpeg的维护者也开始逐渐拆分这个结构体的功能,准备废弃AVCodecContext。目前,官方推荐使用

2021-02-22 10:30:22 849

原创 FFmpeg常用结构体分析(二):AVStream

我们在分析AVFormatContext结构的时候提到其中的一个成员streams。使用该成员我们就可以得到AVStream对象。unsigned int nb_streams;AVStream** streams;nb_streams是当前轨道数,就是流数量,streams是轨道的指针数组。一般而言一个视频文件会有一个视频流和一个音频流,那就是两个AVStream结构。对于AVStream,我们常用的成员有://(1)标识该视频/音频流int index;//(2)指向该音频/视频流

2021-02-22 10:29:46 1144

原创 FFmpeg常用结构体分析(一):AVFormatContext

AVFormatContext是存储音视频封装格式中包含的信息的结构体,也是FFmpeg中统领全局的结构体,对文件的封装、编码操作从这里开始。其中,我们常用的成员有:struct AVInputFormat* iformat; //输入数据的封装格式AVIOContext *pb; // 输入数据的缓存unsigned int nb_streams; //音视频流个数AVStream** streams; //音视频流int64_t duration; //时长(us)

2021-02-22 10:29:16 4265

原创 计算机网络——数字数据的数字编码

计算机网络——数字数据的数字编码数字数据的数字编码就是如何把数字数据用物理信号的波形表示,即用高低电平表示二进制。1、不归零码正电平代表1,负电平代表02、归零码正脉冲代表1,负脉冲代表03、曼彻斯特编码位周期中心的上跳代表0,周期中心的下跳变代表14、差分曼彻斯特编码在每一位的中心处始终都有跳变。位开始边界有跳变代表0,位开始边界没有跳变代表15、示例...

2021-01-22 20:30:33 1815

原创 计算机网络——循环冗余码CRC

文章首发于我的个人博客在数据传输过程中可能出现比特差错(1可能变为0,0也可能变为1).为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。一般来说,纠错码的编码效率不如检错码的编码效率,因而在通信中用得较多的还是检错码。在数据链路层中,最广泛应用的检错码是一种漏检率很低也便于硬件实现的循环冗余校验码CRC(Cyclic Redundancy Code)。1、CRC码CRC码又称多项式码,任何一个由二进制位数串组成的代码都可由一个只含有0和1两个系数的多项式建立对应关系。如

2021-01-22 20:29:26 2051

原创 大津阈值分割(OSTU)

文章首发于我的个人博客大津法是一种灰度图像自适应阈值分割算法,是日本学者Ostu于1979年提出,又称类间方差阈值分割法。大津法根据图像的灰度分布将图像分为前景和背景两部分,前景是我们分割出来的部分。前景和背景的分割值就是我们要通过类间方差法求出的阈值。一、算法原理设图像灰度级为L,灰度级为i的像素点数为ni,那么直方图分布为:pi=ni/N,∑i=0L−1pi=1p_i = n_i /N, \sum_{i=0}^{L-1}p_i=1pi​=ni​/N,i=0∑L−1​pi​=1按灰度级用阈值

2021-01-22 20:27:47 14954 1

原创 直方图处理

1、直方图灰度范围为[0,L-1]的灰度图像的直方图是离散函数h(rk)=nkh(r_k)=n_kh(rk​)=nk​。在实践中,通常用乘积MN表示的图像像素总数除它的每个分量来归一化直方图,M和N是图像的行和列的维数。因此,归一化后的直方图为p(rk)=nk/MNp(r_k)=n_k/MNp(rk​)=nk​/MN。简单地说,p(rk)p(r_k)p(rk​)是灰度级rkr_krk​的在图像中出现概率的一个估计。归一化后的直方图所有分量之和应该为1。直方图是大量空域处理技术的基础,直方图处理可以有效地

2021-01-22 20:25:52 249

原创 通信电子线路——课程介绍

1、前言也许有的同学会说,我只是想做一个普通的电子工程师,学高频有什么用呢?现在的电子产品工作的频率越来越高,以前的电子产品工作频率也就几MHZ(信号对我们来说是透明的),而现在的嵌入式产品工作频率都在几十MHZ以上。因此必须要考虑信号完整性问题(高速电路互联问题)。有两种工程师,一种是已经遇到了信号完整性问题,另一种是即将遇到信号完整性问题。高速电路可能带来的问题:干扰高速电信号容易造成电磁发射通过分布参数/场作用与其他部分电磁耦合时序信号错乱数字电路中最重要的就是时序时

2021-01-22 20:23:42 4341

原创 通信电子线路——multisim高频小信号放大器设计

文章首发于我的个人博客1、单调谐小信号放大器原理小信号谐振放大器主要用于高频小信号或微弱信号的线性放大和选频。单调谐小信号谐振放大器实验电路如下图所示。图中,W1、W2、RE为偏置电阻,用以保证晶体管工作于放大区域,使放大器工作于甲类。C8是RE的旁路电容,C4、C7是输入、输出耦合电容,L1+L2、C5+C6构成放大器 LC谐振回路,R17是集电极可变等效电阻,将集电极电流的变化转换成集-射极之间电压的变化,以实现电压放大,它对谐振回路Q值、带宽有重要影响。为了减轻负载对集电极回路Q值得影响,采

2021-01-22 20:22:03 22244 9

原创 数字信号处理——Python实现快速傅里叶变换FFT

1、FFT背景快速傅里叶变换(FFT)是离散傅里叶变换(DFT)的快速算法,它是根据离散傅里叶的奇、偶、虚、实等特性,在DFT的基础上进行改进获得的。它对傅里叶变换的理论没有新的发现,但它的出现让离散傅里叶变换在计算机系统中得到了广泛的应用。设x(n)为N项的复数序列,对其进行DFT,任一X(m)的计算都需要N次复数乘法和N-1次复数加法,因此要求出N项复序列的X(m),大约需要N2N^2N2次运算。当N逐渐增大时,运算量将呈指数式增长,这在实际应用中是一场灾难。而在FFT中,利用WNW_NWN​的周期

2021-01-22 20:18:45 4339

原创 2DPCA的原理推导与实现

文章首发于我的个人博客1、前言在基于PCA的人脸识别算法中,二维人脸图像要先转换为一维向量。这就导致人脸图像向量将达到高维空间,由于其协方差矩阵维度很高而且训练样本很少,因此很难评估协方差矩阵的准确性。虽然我们可以通过SVD的方法来简化计算,但是将二维图像转换为一维向量,丢失了图像行列的相关信息。而2DPCA是基于二维图像矩阵的,这种处理方法不需要事先把图像转成一维向量,图像的协方差矩阵可以通过原始图像矩阵直接构造出来。3、2DPCA推导2.1 首先定义一个线性变换方程Y=AXY = AXY=

2021-01-22 20:12:47 1882

原创 PCA算法在人脸识别中的应用

1、PCA介绍主成分分析(PCA)是多元统计分析同用来分析数据的一种方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不想关的向量,转换后的这组变量叫做主成分。而这个转换的过程中,可以丢弃很多相关的成分或者对描述这个物体不重要的成分。从而达到对原始数据降维,提取重要特征的目的。其方法主要是通过对协方差矩阵进行特征分解,以得出数据的主成分(即特征向量)与它们的权值(即特征值)。PCA是最简单的以特征量分析多元统计分布的方法。其结果可以理解为对原数据中的方差做出解释:哪一个方向上的数据值对方差的影响

2021-01-22 20:07:11 2369 1

原创 Python网络编程——Socket套接字连接阿里云demo

服务端代码#! /usr/bin/python3# -*- coding: UTF-8 -*-import socketdef main(): s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) host = "xxx.xxx.xxx.xxx" # 改为你云服务器的内网地址 port = 10001 # 改为你的云服务器控制台安全组中打开的端口 s.bind((host, port))

2020-10-07 09:40:33 526

原创 常用单片机介绍

单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。一、51单片机51单片机是对所有兼容Intel 803

2020-09-27 09:50:36 10551

原创 ROS学习笔记(一) ROS文件系统

ROS学习笔记1.ROS文件系统1.1 Catkin编译系统1.1.1 Catkin工作原理Catkin编译的工作流程:首先在工作空间catkin_wa/src/下递归的查找其中每一个ROS的package.package中会有package.xml和CMakeLists.txt文件,Catkin(CMake)编译系统根据CMakeLists.txt文件生成Makefile(位于catkin_wa/build)然后make刚刚生成的Makefile等文件,编译连接生成可执行文件(位于cat

2020-09-07 17:05:02 324

原创 ROS学习笔记(二)launch启动文件

在ROS中,当我们要运行一个节点时,需要使用rosrun命令,但当有十几个节点时,这种方法就会变得非常麻烦.而启动文件(launch file)便是ROS提供的一种可以同时启动多个节点的途径,通过配置,可以为操作多个节点提供极大的便利.1、基本元素一个完整的launch文件必须包含launch和node两个标签.1.1 launch文件的根元素,文件中的所有内容都必须包含在这个标签中:<launch> ...</launch>1.2 node用于启动节点.&lt

2020-09-07 17:04:30 480

原创 ROS学习笔记(三)sensor_msgs::LaserScan转pcl::PointCloud<T>

一、前言首先,为什么要进行数据的转换?举个例子,在ROS中,我们通过订阅Kinect的RGB图像topic就可以获取到图像数据,但当我们要对这些图像进行处理的时候,我们需要用到专门的图像处理库,比如OpenCV.因此,我们需要用到ROS提供的package,cv_brige,将ROS格式的数据转换为OpenCV适用的数据.回到本文,当我们要对激光雷达的数据进行处理时,我们也需要将ROS获取的雷达数据,即sensor_msgs::LaserScan,转化为PCL点云库可以使用的数据,如pcl::Point

2020-09-07 17:03:24 5078 4

原创 算法分析——分治

1、分治2、Leetcode题目2.1 Leetcode169 : 多数元素题目描述:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入: [3,2,3]输出: 3示例2:输入: [2,2,1,1,1,2,2]输出: 2**题目分析:**这道题还是比较简单的,有很多种解法。比如,方法一:由于众数出现的频率大于n/2,所以在排序之后众数必存在于下标[n/2]

2020-08-19 11:27:32 408

原创 项目--python网络爬虫

记录我平常使用python进行爬虫遇到的问题和解决方案.1、python网络爬虫--构建一个基础的网络爬虫应用2、python网络爬虫--下载图片3、python网络爬虫--网页登录

2020-08-15 18:54:32 256

原创 python网络爬虫--网页登录

1、前言主要用到python的selenium库,通过模仿浏览器行为+定位登录所需的标签位置,实现网页登录功能.最后在码云(gitee)上测试自动登录功能.2、selenium定位网页元素关于selenium的使用前准备可以看到我之前的一篇文章python网络爬虫--下载图片.我们有许多方法对页面的元素进行定位,对于不同的元素,我们使用最优的定位方法即可。Selenium提供了下面的方法进行元素定位:find_element_by_idfind_element_by_namefind_ele

2020-08-15 18:53:34 3272

原创 python网络爬虫--下载图片

本项目将使用requests库、BeaurifulSoup库、selenium库实现下载百度图片的功能.1、前言首先,为什么要使用selenium库呢?因为在我们编写爬虫代码的过程中,可能会遇到一个问题:我们需要爬取的内容虽然打开浏览器开发者工具可以看到对应的HTML代码,但是打开网页源代码却找不到对应的内容,而且使用requests库get到的HTML代码也不包含那部分内容.造成这种问题的原因是:你想要爬取的内容采取了js动态加载的方式,属于动态网页.所谓的动态网页,是指跟静态网页相对的一种网页编程

2020-08-09 19:34:41 1283

原创 python网络爬虫— —构建一个基础的网络爬虫应用

本项目使用python的requests库和BeautifulSopu来进行网页内容的爬取,首先简单介绍这两个库,之后说明爬取网页内容的一般步骤,最后以爬取豆瓣读书top250中的前50本书为例说明实际的python爬虫应用应该怎么去构建。1、requests库requests 库是一个简洁且简单的处理HTTP请求的第三方库。request 库支持非常丰富的链接访问功能,包括:国际域名和URL 获取、HTTP 长连接和连接缓存、HTTP 会话和Cookie 保持、浏览器使用风格的SSL 验证、基本的摘

2020-08-09 14:19:09 500

原创 项目——基于YUV色域转换和LZW编码的BMP图像压缩

github项目地址:https://github.com/Kevinnan-teen/ImageCompression.gitgitee项目地址:https://gitee.com/lucasnan/ImageCompression.git一、项目语言C++(std=C++11)二、操作系统windos10+ubuntu16.04 均测试通过三、运行方式进入目录内cd ImageCompression新建build目录mkdir buildcmake编译项目,生成M

2020-08-07 13:15:18 750

原创 OpenCV——图像傅里叶变换

1、OpenCV傅里叶变换相关函数首先我要说明的是,在使用OpenCV写代码做图像傅里叶变换的时候,并仅仅是调用dft函数做一个傅里叶变换这么简单的,而是先要对图像进行一些变换之后,才能得到正确的傅里叶变换结果。因此,第一部分我想先列出几个OpenCV提供的与傅里叶变换相关的函数,在了解这些函数功能的基础上,我们再进行具体的图像傅里叶变换的过程。1.1 dft()首先,OpenCV提供的傅里叶变换函数dft。其定义如下:void dft(InputArray src, OutputArray, ds

2020-08-04 18:05:28 1525

原创 计算机领域国际学术会议和期刊

1、计算机视觉领域1.1 ICCVICCV,英文全称International Conference on computer vision,即国际计算机视觉大会。由IEEE主办,与计算机视觉模式识别会议(CVPR)和欧洲计算机视觉会议(ECCV)并称计算机视觉方向的三大顶级会议,被澳大利亚ICT学术会议排名和中国计算机学会等机构评为最高级别学术会议,在业内具有极高的评价。不同于在美国每年召开一次的CVPR和只在欧洲召开的ECCV,ICCV在世界范围内每两年召开一次。ICCV论文录用率非常低,是三大会议中

2020-08-03 22:40:17 1200

原创 git常用命令

文章首发于我的个人博客首先给出个人一般常用的Git工作流程,然后给出Git具体的命令及其使用场景# (1)首先我在远端仓库,如github创建空的仓库# (2)在本地新建与远端仓库同名的文件夹,进入文件夹内使用`git init`命令初始化git工作空间# (3)使用`git remote add origin <git_url>`命令将仓库连接到刚刚新建的远程仓库# (4)使用`git add <file>`命令将本地仓库写好的代码添加到暂存区# (5)使用`git

2020-07-05 08:30:45 3089

原创 配置github和gitee(码云)共存的Git环境

1.前言为什么要配置github和gitee共存的环境?对我来说,首先,github的访问速度比较慢,相应的使用git提交的速度也比较慢,虽然通过修改HOSTS可以对访问速度慢的问题有一定的改善,但是速度终究不能让人满意.而使用gitee则可以很好地避免这个问题.其次,github对我更大的作用是寻找一些大型的开源项目,而gitee因其速度优势可以作为我的个人项目云平台,这样我在windows和Linux的代码就可以很方便地通过gitee进行同步.2. SSH配置2.1清除已有的git配置如果你之前

2020-07-04 19:36:30 4839

原创 windows10下配置OpenCV+CMake+VS

一、下载OpenCV(可执行文件)官网地址(有梯子的可以下载)CSDN下载地址(我将3.4.10和4.2.0两个版本的打包上传到CSDN,有C币的可以在这里下载)百度网盘地址 提取码:7tff(我也在百度网盘上传了一份,有条件的可以去网盘下载)二、解压OpenCVwindos10下直接运行exe文件解压到本地即可。三、配置环境变量首先,将解压后的OpenCV文件夹下的opencv\build\x64\vc15\bin全局路径添加到系统环境变量中。(不会有同学不知道怎么添加系统环境变量吧?不会

2020-07-03 20:42:46 4553

原创 Github加速访问

文章首发于我的个人博客问题来源github为什么访问速度慢,而且使用git clone 命令在本地克隆项目时速度也很慢呢?首先,了解一下CDN(Content Distribute Network)的概念。CDN可以直译为内容分发网络,CDN解决问题是如何将数据快速可靠地从源服务器传递到用户。用户获取数据时,不需要直接从源服务器获取,通过CDN对数据的分发,用户可以从一个较优质地服务器获取数据,从而达到快速访问。自然,我们可以想到,由于GitHub的加速分发CDN域名github.global.ss

2020-06-28 12:22:17 6756 1

原创 多媒体计算与通信

1. 多媒体通信研究多媒体信息在各种网络环境下传输的问题,以及各种网络之间的无缝切换技术。1.1 通信通信原理 :信息、信源、信道、调制解调通信原理 :基带、低频/高频、射频、天线数据通信 : 电路/包交换、骨干/核心网、广域网/局域网、单工/双工、多路复用、FIFO、协议计算机网络 : ISO七层协议、地址/端口、TCP/IP、Socket、单播/组播、路由器、交换机、网关1.2 EE视角看通信1.3 CS视角看通信1.4 多媒体通信系统EE视角CS

2020-06-21 19:48:54 1165

原创 计算机视觉&图像处理资源汇总

文章首发于我的个人博客前言写这篇文章主要是汇总一下我在学习CV和DIP过程中发现的一些个人觉得非常不错的资料,在这里做一个总结,一方面是整理一下这些资料方便自己查阅,另一方面分享给其他同学做一个参考。计算机视觉首先必须要提前说明 计算机视觉绝对不等于卷积神经网络。卷积神经网络只不过是目前用于解决识别类的问题中效果最好的一种方法而已,当然它还有其他的一些应用,在这里不做过多的赘述,但是我要表达的是计算机视觉是一个非常大的概念,甚至从某种角度来说图像处理也在它的范围之内,而CNN仅仅是其中一部分罢了。

2020-06-21 15:03:51 626

原创 图像压缩——LZW压缩算法

LZW压缩算法1. LZW基础概念之前提到的算术编码、霍夫曼编码等技术集中在消除编码的冗余上,而本文要讲的LZW编码是一种针对空间冗余的无误差压缩方法。LZW算法o又叫“串表压缩算法”,就是通过建立一个将字符串和其对应的记号构成的表(把已经出现过的字符串映射到记号上),用较短的代码来表示较长的字符串来实现压缩。需要注意的是,LZW算法中字符串和记号的对应关系是在压缩的过程中动态生成的,并且隐含在压缩数据中,解压的时候也是一步一步还原编码并动态生成字典的过程。2. LZW算法详解2.1 LZW编码

2020-06-21 11:04:50 4966 1

原创 图像压缩 -- BMP图像格式详解

文章首发于我的个人博客BMP又称为BitMap(位图)。BMP文件的图像深度可选lbit、4bit、8bit及24bit。但一般的bmp图像以24位图像为主,即用R、G、B三种颜色各用8个bit来表示,这样的图像我们称为真彩色,这种情况下是不需要调色板的,也就是所位图信息头后面紧跟的就是位图数据了。因此,这种情况下,bmp图像从文件头开始偏移54个字节就是bmp的图像数据了。下面将用Notepad++为分析工具来对BMP图像格式做一个剖析。我使用的图像如下(图像大小为1.17MB):需要注意的是,

2020-06-17 13:12:35 5382

ORL人脸数据集(.pgm格式)

ORL人脸数据集共包含40个不同人的400张图像,是在1992年4月至1994年4月期间由英国剑桥的Olivetti研究实验室创建。

2020-11-30

opencv3.4和4.2 .exe版本.rar

opencv3.4.10和4.2.0的 exe版本。在windos10下可直接运行然后选择路径在本地安装,避免了源码编译安装的复杂,但同时也缺少opencv_contrib的部分,所以利弊均有,但是对于初学者来说这是性价比最高的安装方法。所需积分不多,因此选择下载。

2020-07-03

学生管理系统.rar

此文件为一个小型学生管理系统,仅供互相交流学习。

2019-07-02

适合初学者的C++编程50题

适合初学者的C++基础程序。通过练习基础编程可以是初学者对C++的基本规则有一定深度的了解。

2018-12-05

空空如也

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

TA关注的人

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