自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大坡3D软件开发

自主操作系统和CPU--用软件来改变世界

原创 在OpenCV里实现条码识别

现在条码这么普及,对于条码的识别,很多应用场合都需要使用。在这里就介绍一个比较小的条码识别库,它就是pyzbar,对于一般的条码,它是能识别出来的,如果比较新的格式可能识别不了。可以使用下面的命令来安装它: pip install -i https://pypi.tuna.tsinghua.ed...

2019-11-30 20:51:39

阅读数 155

评论数 1

原创 在OpenCV里实现不规则ROI的选取

有时候处理图像时,需要像画图软件一样,可以点击鼠标来选择不同的区域,这样选择的区域往往是不规则的图像,那么怎么样才可以在OpenCV里实现这样的功能呢?在这里要采用一点技巧,就是图像的像素与白色像素的与关系运算,任何颜色像素与白色像素作与运算都会只有这个像素的颜色,而与黑色像素运算就只剩下黑色。不...

2019-11-28 09:21:05

阅读数 99

评论数 0

原创 在OpenCV里手写数字案例1

前面学习过SVM来识别手写数字,这次要从自己拍摄的照片来进行识别,这样就会增加了许多流程,比如怎么样把照片里的数字进行分割,怎么样进行调整大小,怎么样计算HOG等等。 现在就来实现把下面的图片进行拆分: 目标是把上面的数字分拆成一个一个的数字图片,如下图: 这个过程是怎么样实现的呢?...

2019-11-27 10:41:03

阅读数 54

评论数 0

原创 在OpenCV里实现彩色图像的直方图显示

由于彩色图像是由三个颜色组成,因此需要先把彩色图像进行分离成三个颜色平面,才可以按每种颜色去计算直方图,这样就是通过calcHist函数来统计数据出来,再通过matplotlib来显示出来,演示代码如下: #python 3.7.4,opencv4.1 #蔡军生 https://blog.cs...

2019-11-26 14:59:21

阅读数 66

评论数 0

原创 在OpenCV里实现内旋轮线

还记得小时候的万花尺吧? 一点也不费脑筋,就可以出来这么多丰富多彩的复杂几何图形。 其实这些都是内旋转轮曲线。那么怎么样才可以在OpenCV里画出这样的曲线呢?这就需要计算曲线上每一点的坐标值了,需要使用到内旋轮线的公式。内旋轮线(hypotrochoid)是追踪附着在围绕半径为 R 的固...

2019-11-26 11:25:16

阅读数 73

评论数 0

原创 在OpenCV里实现命令行参数输入

有时候需要提供一个程序给另外一个程序调用,方法有很多,比如使用模块的方式,比如使用库的方式,但也可以采用命令行的方式,这样还可以独立地运行和开发。采用命令行的方式,那么就需要对命令行参数进行识别,这里就来实现相关的参数的识别功能。首先导入库: import argparse 接着创建argpa...

2019-11-25 20:01:46

阅读数 124

评论数 0

原创 在OpenCV里实现numpy的C++库扩展

如果是常用的功能,已经非常稳定了,需要提供更快的运行速度,就可以使用C++来扩展numpy里的数据计算,这时就需要使用numpy的扩展库功能了。下面就来提供一个使用C++编写numpy扩展库的模板,这样大家就要减少很多弯路,减少跌入坑里的成本。这个扩展库的模板是从mahotas库里抽取出来的,经过...

2019-11-24 12:49:23

阅读数 138

评论数 0

原创 在OpenCV里实现小波变换

小波变换(wavelet transform,WT)是一种新的变换分析方法,它继承和发展了短时傅立叶变换局部化的思想,同时又克服了窗口大小不随频率变化等缺点,能够提供一个随频率改变的“时间-频率”窗口,是进行信号时频分析和处理的理想工具。它的主要特点是通过变换能够充分突出问题某些方面的特征,能对时...

2019-11-23 18:41:33

阅读数 119

评论数 0

原创 在OpenCV里实现WHT变换1

沃尔什-哈达玛变换(Walsh-Hadamard Transform,WHT),是一种典型的非正弦函数变换,采用正交直角函数作为基函数,具有与傅里叶函数类似的性质,图像数据越是均匀分布,经过沃尔什-哈达玛变换后的数据越是集中于矩阵的边角上,因此沃尔什变换具有能量集中的性质,可以用于压缩图像信息。 ...

2019-11-23 12:47:48

阅读数 43

评论数 0

原创 在OpenCV里实现DCT变换

离散余弦变换简称为DCT(是英Discrete Cosine Transform的缩写词),是一种数字处理方法,经常用于数据处理。DCT是多种数字变换方法的一种,它是把空间域图像变换到频率域进行分析的方法。由于DCT的变换核构成的基向量与图像内容无关,而且变换核是可以分离的,既二维DCT可以用两次...

2019-11-22 08:32:44

阅读数 289

评论数 0

原创 numpy里有意思的乘法

数组与一个真值表数组相乘会是怎么样呢?下用来看看例子: >>> a = np.array([1,2]) >>> b = np.array([True,False]) >>> a * b array([1, 0]) 可以看到星乘之后,真值为T...

2019-11-21 16:48:55

阅读数 27

评论数 0

原创 在OpenCV里实现行程编码

行程编码(Run Length Encoding,RLE), 又称游程编码、行程长度编码、变动长度编码 等,是一种统计编码。主要技术是检测重复的比特或字符序列,并用它们的出现次数取而代之。比较适合于二值图像的编码,但是不适用于连续色调图像的压缩,例如日常生活中的照片。为了达到较好的压缩效果,有时行...

2019-11-20 18:17:23

阅读数 96

评论数 0

原创 在OpenCV里实现算术编码2

由于前面算术编码是采用浮点数,而由于浮点数的精度有限,所以要表示的位数有限,导致可以压缩的内容不多。那么就需要采用二进制的方式来表示小数,这样就可以表示很长的小数了。不过在计算的过程中会出现相互接近的现象,所以增加了四分之一和四分之三的处理,这样才可以避开对半时不能判断的现象。可以采用python...

2019-11-20 17:01:09

阅读数 28

评论数 0

原创 在OpenCV里实现算术编码1

算术编码是一种常用的无损和有损数据压缩算法。这是一种熵编码技术,其中是采用高频符号的编码比特位数少于低频符号的比特位数。它比huffman编码技术有一些优势,本文里将要介绍CACM87里实现的算术编码(arithmetic coding)技术,并详细说明算术编码的技术实现细节。 关于算术编码,首...

2019-11-19 10:54:46

阅读数 85

评论数 0

原创 在OpenCV里实现im2col功能

有时候图像要实现从行向量到列向量的转换,下面实现空上函数实现相应的功能: #python 3.7.4,opencv4.1 #蔡军生 https://blog.csdn.net/caimouse/article/details/51749579 # import numpy as np impo...

2019-11-19 08:14:18

阅读数 64

评论数 0

原创 在OpenCV里使用镜像功能

图像的镜像功能并不改变图像的形状,图像的镜像变换分为三种:水平、垂直、对角。可以使用OpenCV里的cv2.flip函数来实现,例子的代码如下: #python 3.7.4,opencv4.1 #蔡军生 https://blog.csdn.net/caimouse/article/detail...

2019-11-18 11:49:00

阅读数 53

评论数 0

原创 在OpenCV里使用减法识别数字

对于一些简单的数字,并且又是截图的数字,比如电脑里截屏的图片,或者是游戏中一些数字的识别,就可以采用这种方法。如下面图像中的数字: 下面的程序,就是把里面的0和1识别出来: #python 3.7.4,opencv4.1 #蔡军生 https://blog.csdn.net/caimou...

2019-11-18 08:38:01

阅读数 40

评论数 0

原创 在OpenCV里使用伪彩色显示灰度图

通常,空间中的行星和其他物体的灰度图像是伪彩色来显示细节,并对不同颜色的不同材质对应的区域进行标记。 假设我们想在地图上显示中国不同地区的温度。我们可以把中国地图上的温度数据叠加为灰度图像——较暗的区域代表较冷的温度,更明亮的区域代表较热的区域。这样的表现不仅令人难以置信,而且代表了两个重要的原...

2019-11-17 16:37:40

阅读数 50

评论数 0

原创 在OpenCV里计算图像的质心

图像的质心会经常使用到。图像的质心,也称为图像的重心。扩展到图像上面,图像中每一点的像素值可以理解成此点处的质量。不同之处是图像是二维的,解决的方法是在x方向和y方向上分别独立地找出质心。即对于x方向的质心,图像在质心左右两边像素和相等;对于y方向的质心,图像在质心上下两边像素和相等。 记图像中...

2019-11-15 18:12:40

阅读数 141

评论数 0

原创 在OpenCV里实现霍夫曼编码2

前面学习了怎么样使用霍夫曼编码来实现字符串的编码,现在使用它来对灰度图像进行编码,在这里需要使用到图像的直方图统计,由于OpenCV里已经提供了直方图统计,因此很容易就可以把前面的代码修改过来,以便针对256级别的像素进行编码。 下面的例子,为了测试把图像一些像素设置为一种颜色,这样就可以看到同...

2019-11-15 11:53:31

阅读数 39

评论数 0

原创 在OpenCV里实现霍夫曼编码1

在前面学习了信息熵,可以计算所有信息的平均码长,那么就可以根据这个标准来判断是否可以对信息进行压缩的操作。这里典型的代表是哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据...

2019-11-14 16:48:24

阅读数 90

评论数 0

原创 在OpenCV里实现计算图像信息熵

在对图像进行编码处理过程中,很自然就会出现一个问题:表示一幅图像的灰度级到底需要多少比特?也就是说不丢失信息的情况下是否存在一个最小数据来说明已经足够充分地描述这幅图像。信息熵可以衡量变量的不确定性,变量的不确定性越大,熵也就越大。因此信息论里提供了计算信息熵的公式: 在图像里,由于是采用二...

2019-11-13 17:21:33

阅读数 212

评论数 0

原创 在OpenCV里实现棋盘生成

在图像的算法处理里,经常要使用一些标准的图像来做测试,比如棋盘图像就是其中之一,它经常使用来测试一些噪声、摄像头校准等等。下面就来使用OpenCV来生成一些棋盘图像,如果你想生成文件,直接使用前面的保存函数就可以了。整个代码如下: #python 3.7.4,opencv4.1 #蔡军生 ht...

2019-11-13 10:09:32

阅读数 42

评论数 0

原创 在OpenCV里实现雷登变换

由于CT在医院里已经起到很大的作用,为所有人带来前所未有的好处,那么深入地学习这种技术,以便设计出更好的CT机器,造福人类,永远是一个方向。在CT技术里,有一个从光电感应之后成像的问题要处理,就是从接收到X光的照片里重构原始图像出来,在这个重构的过程中要使用到radon变换,这个变换非常重要。下面...

2019-11-13 08:43:43

阅读数 52

评论数 0

原创 在OpenCV里实现向图像添加椒盐噪声

椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。椒盐噪声的成因可能是影像讯号受到突如其来的强烈干扰而产生、类比数位转换器或位元传输错误等。例如失效的感应器导致像素值为最小值,饱和的感应器导致像素值...

2019-11-11 17:42:21

阅读数 102

评论数 0

原创 在OpenCV里实现向图像添加高斯噪声1

前面学习过高斯噪声直接添加到图像里,其实还有另外两种高斯噪声的添加,一种是在每一个点里添加期望的方差值,另外一种是根据公式g=f+n*f来合并噪声。因此需要再次修改代码,才可以生成这两种噪声。 演示代码如下: #python 3.7.4,opencv4.1 #蔡军生 https://blog...

2019-11-11 15:13:10

阅读数 72

评论数 0

原创 在OpenCV里实现向图像添加高斯噪声

在进行平滑滤波中,经常要测试滤波的算法是否有作用,比如模拟现实中出现一些高斯噪声,要怎么样对图像进行处理,才能达到这个目的呢?下面就来解决这个问题,这里使用np.random.normal函数来生成高斯噪声,然后再添加到归一化的图像里,最后再转换为255的灰度值进行显示。 这个例子的代码如下: ...

2019-11-10 20:14:57

阅读数 177

评论数 0

原创 在OpenCV里实现负片函数imcomplement

大家要是使用过MATLAB,要想取得负片就会使用到这个imcomplement函数,这个函数就是对图像进行取反的动作,比如灰度为0,负片运算之后就是255了,同理255转为0。下面使用OpenCV来实现相关的功能,这里采用查找表的方式,以便提高计算速度,例子如下: #python 3.7.4,...

2019-11-10 13:10:25

阅读数 44

评论数 0

原创 在OpenCV里实现数学sin曲线显示

有时候研究数学问题的时候,其实也很想看到图像,那么也可以使用OpenCV里的窗口来显示图像。只要把图像计算在二维的坐标数组里,就可以显示图像出来,下面使用np.meshgrid来构造二维的坐标变换来演示sin曲线的显示: #python 3.7.4,opencv4.1 #蔡军生 https:/...

2019-11-09 20:22:27

阅读数 49

评论数 0

原创 在OpenCV里实现函数imadjust

imadjust 函数是针对灰度图像进行灰度变换的基本图像。 J = imadjust(f,[low_in; high_in],[low_out; high_out],gamma) 此函数将 f 的灰度值映像到 g 中的新值, 也就是将 low_in 与high in 之间的值映射到 low ...

2019-11-08 16:29:00

阅读数 48

评论数 0

原创 在OpenCV里使用查找表函数cv.LUT

由于在图像处理里,经常要进行每个像素变换,这个变换的过程,可能计算量比较大,这时就可以使用预先计算变换数据,而不必要每个像素计算一次,这样就可以大大减少计算量,提高算法的运行效率。因此OpenCV里的LUT函数就实现这样的功能,下面我们来演示一下怎么样使用它。 LUT函数定义如下: src...

2019-11-08 10:56:46

阅读数 87

评论数 0

原创 当孩子说我不想做作业,你会怎么办呢?

昨天小学老师通知大家去学校上一个家长培训课程,今天就准时去参加了。上课的老师先问大家是否要让自己的孩子做一个听话的孩子,但是完全听话的孩子,相当于把孩子全部束缚起来了,这样的孩子肯定也没有快乐而言。从而导致像近期南山某中学学生喊出的口号:我爱学习,学习使我妈快乐!我妈快乐,全家快乐!。一开始听到这...

2019-11-07 18:36:21

阅读数 86

评论数 0

原创 在OpenCV里使用级联分类器进行人脸识别

本文将要学习Haar级联目标检测,明白最基本的人脸检测和眼睛检测。在2001年,Viola和Jones两位大牛发表了经典的《Rapid Object Detection using a Boosted Cascade of Simple Features》和《Robust Real-Time Fa...

2019-11-07 11:44:10

阅读数 64

评论数 0

原创 在OpenCV里使用高动态范围图像

在本文里将要学习高动态范围图像(HDR,High Dynamic Range )的生成和显示。高动态范围成像(hdri或hdr)是一种用于成像和摄影的技术,其目的是再现比标准数字成像或摄影技术更大的动态光度范围。虽然人眼可以适应各种光照条件,但大多数成像设备每通道使用8位,因此我们仅限于256级。...

2019-11-06 11:27:46

阅读数 39

评论数 0

原创 在OpenCV里使用图片修复

有一些旧的图片可能保存得不好,会导致丢失了一些像素,如下图这样: 这时如果有人觉得这个图片很珍贵,要想去修复它,怎么办呢? 在OpenCV里提供了两种算法来进行图片修复,第一种是cv.INPAINT_TELEA,这个算法是FMM算法,先处理待修复区域边缘上的像素点,然后层层向内推进,直到修...

2019-11-05 15:22:03

阅读数 71

评论数 0

原创 在OpenCV里使用非局部平滑算法(图像去噪)

很多图像平滑技术,比如高斯平滑,中值平滑等,当噪声比较小时这些技术的效果都是很好的。在这些技术中我们选取像素周围一个小的邻域然后用高斯平均值或者中值平均值取代中心像素。简单来说,像素级别的噪声去除是限制在局部邻域的。 NL-Means的全称是:Non-Local Means,直译过来是非局部平均...

2019-11-04 17:38:44

阅读数 74

评论数 0

原创 在OpenCV里使用K均值聚类算法

要在OpenCV里使用K均值聚类算法,首先要理解 cv.kmeans()函数,这个函数的定义如下: 1. data是样本数据输入,应该是np.float32的数据类型,每个特征占用一列。 2. K是表示最终分几类。 3. criteria是算法迭代次数的终止条件。它是由三个参数的元组( ...

2019-11-04 15:41:26

阅读数 26

评论数 0

原创 我能成为创客吗?

创客最风光时,应该是总理来深圳柴火创客空间添柴之时。 从那时起,创客就让我有点向往,时至今日,我慢慢想成为创客,从这里开始记录一个普通程序员变成创客的过程。把创客过程的生活点点滴滴记录下来,也许让今后回首往事时,多一点念想,多一点回味人生。 创客的定义是什么呢? 创客(Mak-er)“创”指...

2019-11-03 15:23:58

阅读数 934

评论数 0

原创 reactos操作系统实现(89)

键盘驱动程序是一个最基本的驱动程序,通过学习这个简单而实用的驱动程序来了解ReactOS驱动程序的结构,驱动程序的运行流程。在前面的I/O管理器分析里,已经知道操作系统加载驱动程序的过程,也了解了驱动程序在系统里是以驱动程序对象来管理的,也就是通过DRIVER_OBJECT对象来表示一个驱动程序的...

2019-11-03 15:21:23

阅读数 2004

评论数 0

原创 在OpenCV里理解K均值聚类算法

前面学习kNN分类算法,在这里将要学习K均值聚类算法(K-Means Clustering)。现在通过一个例子来学习这个算法相关概念,比如一个成衣公司想要生产一批T-shirt上衣,那么公司肯定想生产的上衣满足所有人群。于是公司就派人做了一个深入的调查,收集所有数据并画出图,如下: 从这个图...

2019-11-03 15:03:54

阅读数 20

评论数 0

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