- 博客(42)
- 资源 (44)
- 收藏
- 关注
原创 在OpenCV里实现条码识别
现在条码这么普及,对于条码的识别,很多应用场合都需要使用。在这里就介绍一个比较小的条码识别库,它就是pyzbar,对于一般的条码,它是能识别出来的,如果比较新的格式可能识别不了。可以使用下面的命令来安装它:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyzbar成功安装之后,就可以用下面的代码进行测试:#python...
2019-11-30 20:51:39 1362 1
原创 在OpenCV里实现不规则ROI的选取
有时候处理图像时,需要像画图软件一样,可以点击鼠标来选择不同的区域,这样选择的区域往往是不规则的图像,那么怎么样才可以在OpenCV里实现这样的功能呢?在这里要采用一点技巧,就是图像的像素与白色像素的与关系运算,任何颜色像素与白色像素作与运算都会只有这个像素的颜色,而与黑色像素运算就只剩下黑色。不规则的图形填充可以使用drawContours函数来实现。演示的例子如下:#python 3.7...
2019-11-28 09:21:05 1044
原创 在OpenCV里手写数字案例1
前面学习过SVM来识别手写数字,这次要从自己拍摄的照片来进行识别,这样就会增加了许多流程,比如怎么样把照片里的数字进行分割,怎么样进行调整大小,怎么样计算HOG等等。现在就来实现把下面的图片进行拆分:目标是把上面的数字分拆成一个一个的数字图片,如下图:这个过程是怎么样实现的呢?这需要先使用cvtColor函数从彩色图片转换为灰度图片,接着使用GaussianBlur来进行高斯平...
2019-11-27 10:41:03 442
原创 在OpenCV里实现彩色图像的直方图显示
由于彩色图像是由三个颜色组成,因此需要先把彩色图像进行分离成三个颜色平面,才可以按每种颜色去计算直方图,这样就是通过calcHist函数来统计数据出来,再通过matplotlib来显示出来,演示代码如下:#python 3.7.4,opencv4.1#蔡军生 https://blog.csdn.net/caimouse/article/details/51749579#9073204@q...
2019-11-26 14:59:21 832
原创 在OpenCV里实现内旋轮线
还记得小时候的万花尺吧?一点也不费脑筋,就可以出来这么多丰富多彩的复杂几何图形。其实这些都是内旋转轮曲线。那么怎么样才可以在OpenCV里画出这样的曲线呢?这就需要计算曲线上每一点的坐标值了,需要使用到内旋轮线的公式。内旋轮线(hypotrochoid)是追踪附着在围绕半径为 R 的固定的圆内侧滚转的半径为 r 的圆上的一个点得到的转迹线,这个点到内部滚动的圆的中心的距离是 d。下面就...
2019-11-26 11:25:16 489
原创 在OpenCV里实现命令行参数输入
有时候需要提供一个程序给另外一个程序调用,方法有很多,比如使用模块的方式,比如使用库的方式,但也可以采用命令行的方式,这样还可以独立地运行和开发。采用命令行的方式,那么就需要对命令行参数进行识别,这里就来实现相关的参数的识别功能。首先导入库:import argparse接着创建argparse.ArgumentParser()对象,然后调用add_argument来添加参数,最后pars...
2019-11-25 20:01:46 616
原创 在OpenCV里实现numpy的C++库扩展
如果是常用的功能,已经非常稳定了,需要提供更快的运行速度,就可以使用C++来扩展numpy里的数据计算,这时就需要使用numpy的扩展库功能了。下面就来提供一个使用C++编写numpy扩展库的模板,这样大家就要减少很多弯路,减少跌入坑里的成本。这个扩展库的模板是从mahotas库里抽取出来的,经过最大化的简化,这样更加容易理解,更方便学习。在这个扩展库里,首先要编写setup.py文件,内容如...
2019-11-24 12:49:23 1206
原创 在OpenCV里实现小波变换
小波变换(wavelet transform,WT)是一种新的变换分析方法,它继承和发展了短时傅立叶变换局部化的思想,同时又克服了窗口大小不随频率变化等缺点,能够提供一个随频率改变的“时间-频率”窗口,是进行信号时频分析和处理的理想工具。它的主要特点是通过变换能够充分突出问题某些方面的特征,能对时间(空间)频率的局部化分析,通过伸缩平移运算对信号(函数)逐步进行多尺度细化,最终达到高频处时间细分,...
2019-11-23 18:41:33 3440
原创 在OpenCV里实现WHT变换1
沃尔什-哈达玛变换(Walsh-Hadamard Transform,WHT),是一种典型的非正弦函数变换,采用正交直角函数作为基函数,具有与傅里叶函数类似的性质,图像数据越是均匀分布,经过沃尔什-哈达玛变换后的数据越是集中于矩阵的边角上,因此沃尔什变换具有能量集中的性质,可以用于压缩图像信息。在Matlab里计算如下:采用sympy库(可以使用pip install sympy安...
2019-11-23 12:47:48 1294 2
原创 在OpenCV里实现DCT变换
离散余弦变换简称为DCT(是英Discrete Cosine Transform的缩写词),是一种数字处理方法,经常用于数据处理。DCT是多种数字变换方法的一种,它是把空间域图像变换到频率域进行分析的方法。由于DCT的变换核构成的基向量与图像内容无关,而且变换核是可以分离的,既二维DCT可以用两次一维DCT来完成,使得数学运算难度大大简化,再配以已经发现的其它快速算法,使得DCT编码得到了广泛的应...
2019-11-22 08:32:44 2697
原创 numpy里有意思的乘法
数组与一个真值表数组相乘会是怎么样呢?下用来看看例子:>>> a = np.array([1,2])>>> b = np.array([True,False])>>> a * barray([1, 0])可以看到星乘之后,真值为True的元素保留下来了,达到过滤的目的。玩转人工智能库-深入浅出OpenCVhttps://edu...
2019-11-21 16:48:55 273
原创 在OpenCV里实现行程编码
行程编码(Run Length Encoding,RLE), 又称游程编码、行程长度编码、变动长度编码 等,是一种统计编码。主要技术是检测重复的比特或字符序列,并用它们的出现次数取而代之。比较适合于二值图像的编码,但是不适用于连续色调图像的压缩,例如日常生活中的照片。为了达到较好的压缩效果,有时行程编码和其他一些编码方法混合使用。可以使用下面的例子来实现:#python 3.7.4,op...
2019-11-20 18:17:23 1863 2
原创 在OpenCV里实现算术编码2
由于前面算术编码是采用浮点数,而由于浮点数的精度有限,所以要表示的位数有限,导致可以压缩的内容不多。那么就需要采用二进制的方式来表示小数,这样就可以表示很长的小数了。不过在计算的过程中会出现相互接近的现象,所以增加了四分之一和四分之三的处理,这样才可以避开对半时不能判断的现象。可以采用python代码实现如下:#python 3.7.4,opencv4.1#蔡军生 https://blog...
2019-11-20 17:01:09 359
原创 在OpenCV里实现算术编码1
算术编码是一种常用的无损和有损数据压缩算法。这是一种熵编码技术,其中是采用高频符号的编码比特位数少于低频符号的比特位数。它比huffman编码技术有一些优势,本文里将要介绍CACM87里实现的算术编码(arithmetic coding)技术,并详细说明算术编码的技术实现细节。关于算术编码,首先要了解的是它怎么样工作过程。算术编码接受由符号(几乎总是8位字符)组成的消息(通常是一个文件),并将...
2019-11-19 10:54:46 475
原创 在OpenCV里实现im2col功能
有时候图像要实现从行向量到列向量的转换,下面实现空上函数实现相应的功能:#python 3.7.4,opencv4.1#蔡军生 https://blog.csdn.net/caimouse/article/details/51749579#import numpy as npimport cv2from matplotlib import pyplot as plt#def ...
2019-11-19 08:14:18 520
原创 在OpenCV里使用镜像功能
图像的镜像功能并不改变图像的形状,图像的镜像变换分为三种:水平、垂直、对角。可以使用OpenCV里的cv2.flip函数来实现,例子的代码如下:#python 3.7.4,opencv4.1#蔡军生 https://blog.csdn.net/caimouse/article/details/51749579#import numpy as npimport cv2from mat...
2019-11-18 11:49:00 674
原创 在OpenCV里使用减法识别数字
对于一些简单的数字,并且又是截图的数字,比如电脑里截屏的图片,或者是游戏中一些数字的识别,就可以采用这种方法。如下面图像中的数字:下面的程序,就是把里面的0和1识别出来:#python 3.7.4,opencv4.1#蔡军生 https://blog.csdn.net/caimouse/article/details/51749579#import numpy as npim...
2019-11-18 08:38:01 274
原创 在OpenCV里使用伪彩色显示灰度图
通常,空间中的行星和其他物体的灰度图像是伪彩色来显示细节,并对不同颜色的不同材质对应的区域进行标记。假设我们想在地图上显示中国不同地区的温度。我们可以把中国地图上的温度数据叠加为灰度图像——较暗的区域代表较冷的温度,更明亮的区域代表较热的区域。这样的表现不仅令人难以置信,而且代表了两个重要的原因。首先,人类视觉系统没有被优化来测量灰度强度的微小变化。我们能更好地感知颜色的变化。第二,我们用不同...
2019-11-17 16:37:40 1531
原创 在OpenCV里计算图像的质心
图像的质心会经常使用到。图像的质心,也称为图像的重心。扩展到图像上面,图像中每一点的像素值可以理解成此点处的质量。不同之处是图像是二维的,解决的方法是在x方向和y方向上分别独立地找出质心。即对于x方向的质心,图像在质心左右两边像素和相等;对于y方向的质心,图像在质心上下两边像素和相等。记图像中每一像素在x方向上坐标为:xi,对应的像素值为:pi,质心在x方向上坐标为:x。可以改为:...
2019-11-15 18:12:40 7111 7
原创 在OpenCV里实现霍夫曼编码2
前面学习了怎么样使用霍夫曼编码来实现字符串的编码,现在使用它来对灰度图像进行编码,在这里需要使用到图像的直方图统计,由于OpenCV里已经提供了直方图统计,因此很容易就可以把前面的代码修改过来,以便针对256级别的像素进行编码。下面的例子,为了测试把图像一些像素设置为一种颜色,这样就可以看到同一种颜色的元素重复越高,压缩率就越高,编码就越短,代码如下:#python 3.7.4,open...
2019-11-15 11:53:31 868 1
原创 在OpenCV里实现霍夫曼编码1
在前面学习了信息熵,可以计算所有信息的平均码长,那么就可以根据这个标准来判断是否可以对信息进行压缩的操作。这里典型的代表是哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也...
2019-11-14 16:48:24 1127
原创 在OpenCV里实现计算图像信息熵
在对图像进行编码处理过程中,很自然就会出现一个问题:表示一幅图像的灰度级到底需要多少比特?也就是说不丢失信息的情况下是否存在一个最小数据来说明已经足够充分地描述这幅图像。信息熵可以衡量变量的不确定性,变量的不确定性越大,熵也就越大。因此信息论里提供了计算信息熵的公式:在图像里,由于是采用二进制表示,所以是基于2为底的对数,可以采用下面的代码来计算这个公式的值,这值就是表示变长编码时,平均码...
2019-11-13 17:21:33 4578
原创 在OpenCV里实现棋盘生成
在图像的算法处理里,经常要使用一些标准的图像来做测试,比如棋盘图像就是其中之一,它经常使用来测试一些噪声、摄像头校准等等。下面就来使用OpenCV来生成一些棋盘图像,如果你想生成文件,直接使用前面的保存函数就可以了。整个代码如下:#python 3.7.4,opencv4.1#蔡军生 https://blog.csdn.net/caimouse/article/details/517495...
2019-11-13 10:09:32 616
原创 在OpenCV里实现雷登变换
由于CT在医院里已经起到很大的作用,为所有人带来前所未有的好处,那么深入地学习这种技术,以便设计出更好的CT机器,造福人类,永远是一个方向。在CT技术里,有一个从光电感应之后成像的问题要处理,就是从接收到X光的照片里重构原始图像出来,在这个重构的过程中要使用到radon变换,这个变换非常重要。下面就来使用OpenCV的函数来实现这样的变换:#python 3.7.4,opencv4.1#蔡...
2019-11-13 08:43:43 1854 2
原创 在OpenCV里实现向图像添加椒盐噪声
椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。椒盐噪声的成因可能是影像讯号受到突如其来的强烈干扰而产生、类比数位转换器或位元传输错误等。例如失效的感应器导致像素值为最小值,饱和的感应器导致像素值为最大值。在研究平滑的算法时,也要向图像里添加这种噪声,以便测试算法的有效性。下面这个例子,就实现...
2019-11-11 17:42:21 1100
原创 在OpenCV里实现向图像添加高斯噪声1
前面学习过高斯噪声直接添加到图像里,其实还有另外两种高斯噪声的添加,一种是在每一个点里添加期望的方差值,另外一种是根据公式g=f+n*f来合并噪声。因此需要再次修改代码,才可以生成这两种噪声。演示代码如下:#python 3.7.4,opencv4.1#蔡军生 https://blog.csdn.net/caimouse/article/details/51749579#impor...
2019-11-11 15:13:10 1269
原创 在OpenCV里实现向图像添加高斯噪声
在进行平滑滤波中,经常要测试滤波的算法是否有作用,比如模拟现实中出现一些高斯噪声,要怎么样对图像进行处理,才能达到这个目的呢?下面就来解决这个问题,这里使用np.random.normal函数来生成高斯噪声,然后再添加到归一化的图像里,最后再转换为255的灰度值进行显示。这个例子的代码如下:#python 3.7.4,opencv4.1#蔡军生 https://blog.csdn.ne...
2019-11-10 20:14:57 2392
原创 在OpenCV里实现负片函数imcomplement
大家要是使用过MATLAB,要想取得负片就会使用到这个imcomplement函数,这个函数就是对图像进行取反的动作,比如灰度为0,负片运算之后就是255了,同理255转为0。下面使用OpenCV来实现相关的功能,这里采用查找表的方式,以便提高计算速度,例子如下:#python 3.7.4,opencv4.1#蔡军生 https://blog.csdn.net/caimouse/artic...
2019-11-10 13:10:25 1408
原创 在OpenCV里实现数学sin曲线显示
有时候研究数学问题的时候,其实也很想看到图像,那么也可以使用OpenCV里的窗口来显示图像。只要把图像计算在二维的坐标数组里,就可以显示图像出来,下面使用np.meshgrid来构造二维的坐标变换来演示sin曲线的显示:#python 3.7.4,opencv4.1#蔡军生 https://blog.csdn.net/caimouse/article/details/51749579#...
2019-11-09 20:22:27 1409
原创 在OpenCV里实现函数imadjust
imadjust 函数是针对灰度图像进行灰度变换的基本图像。J = imadjust(f,[low_in; high_in],[low_out; high_out],gamma)此函数将 f 的灰度值映像到 g 中的新值, 也就是将 low_in 与high in 之间的值映射到 low out 与 high out 之间的值。 low in 以下与 high in 以上的值可以被截去。 ...
2019-11-08 16:29:00 1312
原创 在OpenCV里使用查找表函数cv.LUT
由于在图像处理里,经常要进行每个像素变换,这个变换的过程,可能计算量比较大,这时就可以使用预先计算变换数据,而不必要每个像素计算一次,这样就可以大大减少计算量,提高算法的运行效率。因此OpenCV里的LUT函数就实现这样的功能,下面我们来演示一下怎么样使用它。LUT函数定义如下:src表示的是输入图像(可以是单通道也可是3通道)lut表示查找表(查找表也可以是单通道,也可以是3通道...
2019-11-08 10:56:46 1185
原创 当孩子说我不想做作业,你会怎么办呢?
昨天小学老师通知大家去学校上一个家长培训课程,今天就准时去参加了。上课的老师先问大家是否要让自己的孩子做一个听话的孩子,但是完全听话的孩子,相当于把孩子全部束缚起来了,这样的孩子肯定也没有快乐而言。从而导致像近期南山某中学学生喊出的口号:我爱学习,学习使我妈快乐!我妈快乐,全家快乐!。一开始听到这句话,大家都会心地笑了一下。不过细细地思考这句话,背后肯定不是孩子的快乐,而是让别人的快乐。说明家里家...
2019-11-07 18:36:21 819
原创 在OpenCV里使用级联分类器进行人脸识别
本文将要学习Haar级联目标检测,明白最基本的人脸检测和眼睛检测。在2001年,Viola和Jones两位大牛发表了经典的《Rapid Object Detection using a Boosted Cascade of Simple Features》和《Robust Real-Time Face Detection》,在AdaBoost算法的基础上,使用Haar-like小波特征和积分图方法...
2019-11-07 11:44:10 978
原创 在OpenCV里使用高动态范围图像
在本文里将要学习高动态范围图像(HDR,High Dynamic Range )的生成和显示。高动态范围成像(hdri或hdr)是一种用于成像和摄影的技术,其目的是再现比标准数字成像或摄影技术更大的动态光度范围。虽然人眼可以适应各种光照条件,但大多数成像设备每通道使用8位,因此我们仅限于256级。现实真正存在的亮度差,即最亮的物体亮度,和最小的物体亮度之比为10的8次方, 而人类的眼睛所能看到的范...
2019-11-06 11:27:46 641
原创 在OpenCV里使用图片修复
有一些旧的图片可能保存得不好,会导致丢失了一些像素,如下图这样:这时如果有人觉得这个图片很珍贵,要想去修复它,怎么办呢?在OpenCV里提供了两种算法来进行图片修复,第一种是cv.INPAINT_TELEA,这个算法是FMM算法,先处理待修复区域边缘上的像素点,然后层层向内推进,直到修复完所有的像素点。第二种是cv.INPAINT_NS,该算法基于流体力学,利用偏微分方程。基本原理...
2019-11-05 15:22:03 1214
原创 在OpenCV里使用非局部平滑算法(图像去噪)
很多图像平滑技术,比如高斯平滑,中值平滑等,当噪声比较小时这些技术的效果都是很好的。在这些技术中我们选取像素周围一个小的邻域然后用高斯平均值或者中值平均值取代中心像素。简单来说,像素级别的噪声去除是限制在局部邻域的。NL-Means的全称是:Non-Local Means,直译过来是非局部平均,在2005年由Baudes提出,该算法使用自然图像中普遍存在的冗余信息来去噪声。与常用的双线性滤波、...
2019-11-04 17:38:44 854 1
原创 在OpenCV里使用K均值聚类算法
要在OpenCV里使用K均值聚类算法,首先要理解 cv.kmeans()函数,这个函数的定义如下:1. data是样本数据输入,应该是np.float32的数据类型,每个特征占用一列。2. K是表示最终分几类。3. criteria是算法迭代次数的终止条件。它是由三个参数的元组( type, max_iter, epsilon )组成:cv.TERM_CRITERIA_EPS ...
2019-11-04 15:41:26 535
原创 我能成为创客吗?
创客最风光时,应该是总理来深圳柴火创客空间添柴之时。从那时起,创客就让我有点向往,时至今日,我慢慢想成为创客,从这里开始记录一个普通程序员变成创客的过程。把创客过程的生活点点滴滴记录下来,也许让今后回首往事时,多一点念想,多一点回味人生。创客的定义是什么呢?创客(Mak-er)“创”指创造,“客”指从事某种活动的人,“创客”本指勇于创新,努力将自己的创意变为现实的人。这个词译自英文单词...
2019-11-03 15:23:58 1225
原创 reactos操作系统实现(89)
键盘驱动程序是一个最基本的驱动程序,通过学习这个简单而实用的驱动程序来了解ReactOS驱动程序的结构,驱动程序的运行流程。在前面的I/O管理器分析里,已经知道操作系统加载驱动程序的过程,也了解了驱动程序在系统里是以驱动程序对象来管理的,也就是通过DRIVER_OBJECT对象来表示一个驱动程序的。键盘驱动程序是一个输入输出的设备,但在ReactOS驱动程序分类里,是分在输入设备类...
2019-11-03 15:21:23 2345
原创 在OpenCV里理解K均值聚类算法
前面学习kNN分类算法,在这里将要学习K均值聚类算法(K-Means Clustering)。现在通过一个例子来学习这个算法相关概念,比如一个成衣公司想要生产一批T-shirt上衣,那么公司肯定想生产的上衣满足所有人群。于是公司就派人做了一个深入的调查,收集所有数据并画出图,如下:从这个图上来看,公司显然不能为每一个人都生产不同尺寸大小的衣服。因为当有100万人时,要生产100万个尺寸,显...
2019-11-03 15:03:54 454
python抓取天气并分析 实例源码
2017-08-28
书《深度学习》
2017-03-13
国产8051模拟器
2016-09-10
tinyxml2配套源码
2016-06-27
selenium的浏览器驱动
2016-06-14
开源鸿蒙4.0不能进入桌面的补丁
2024-03-17
开源鸿蒙 4.0 RK3566开发板配置
2024-03-17
svm_hog_data.rar
2020-03-02
实现numpy的C++库扩展
2019-11-24
python web py入门配套源代码
2018-02-23
webpy演示例子1
2018-02-21
胶囊模型的代码
2018-02-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人