自定义博客皮肤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里学习常见问题汇编27

问题二十七:双三次插值( Bicubic Interpolation ) 在这里采用双三次插值实现放大图像1.5倍,它计算量要比双线性二次插值要大,不过它的效果也比双线性二次插值要好。双三次插值,英文是Bicubic interpolation。双三次插值是一种更加复杂的插值方式,它能创造出比双...

2020-03-31 10:06:23 185 0

原创 在OpenCV里学习常见问题汇编26

问题二十六:双线性插值( Bilinear Interpolation ) 前面是使用近邻插值,会发现显示的效果不是很好,会有马赛克现象,为了改善这种情况。在这个问题里采用双线性插值来解决,要想理解双线性插值,先来看看一维的线性插值: 一般情况之下,插值都是位于原来两个像素点之间进行,那么...

2020-03-30 11:54:33 175 0

原创 在OpenCV里学习常见问题汇编25

问题二十五:最邻近插值( Nearest-neighbor Interpolation ) 最近邻插值在图像放大时补充的像素取最临近的像素的值。由于方法简单,所以处理速度很快,但是放大图像画质劣化明显。使用下面的公式来进行计算: 在这里我们使用a=1.5来放大图像,再进行近邻插值。原图如下...

2020-03-29 21:06:21 207 0

原创 在OpenCV里学习常见问题汇编24

问题二十四:伽玛校正(Gamma Correction) 由于照相机等电子设备传感器的非线性光电转换特性,必然导致图像的失真,为了恢复图像的原来真实的图像,采用伽玛校正对图像进行处理。可以把这个变换的公式用下面来表示: 这里x为为0到1,c是常数,g为伽玛系数,通常为2.2,可以用代码...

2020-03-29 12:24:15 153 0

原创 在OpenCV里学习常见问题汇编23

问题二十三:直方图均衡化( Histogram Equalization ) 这个问题就是对直方图进行操作,不过是全局地考虑所有元素。直方图均衡化(Histogram Equalization) 又称直方图平坦化,实质上是对图像进行非线性拉伸,重新分配图像象元值,使一定灰度范围内象元值的数量大致...

2020-03-28 13:41:55 200 0

原创 在OpenCV里学习常见问题汇编22

问题二十二:直方图操作 这个问题就是对图像直方图进行一个指定的操作,比如要让图像变换之后平均值为128,标准差为52,那么就可以采用下面的公式来变换: xout = s0/s * (xin - m) + m0 输入的图像如下图: 最终变换为: 可以后面的图像比前面的图像,对比...

2020-03-27 16:39:45 212 0

原创 在OpenCV里学习常见问题汇编21

问题二十一:直方图归一化 这个问题就是进行图像灰度变换,适应人眼的变化。有些灰度图像的像素并没有分布在 [0,255] 内,而是分布在 [0,255] 的子区间内。这样的图像肉眼看上去往往不是很清晰。我们可以通过直方图归一化的方式,将它的像素分布从 [0,255] 的子区间变为 [0,255] ...

2020-03-26 18:35:39 209 0

原创 在OpenCV里学习常见问题汇编20

问题二十:直方图 这个问题,就是显示一个图片的直方图,因为直方图对一个图像的分析比较重要,它可以分析出图像的对比度,以及图像的像素分布情况。这里使用Matplotlib来画直方图非常简单的,代码只有几行: plt.hist(gray.ravel(), bins=255, rwidth=0.8,...

2020-03-25 16:51:31 200 0

原创 在OpenCV里学习常见问题汇编19

问题十九:LoG滤波器 由于Laplace算子是通过对图像进行微分操作实现边缘检测的,所以对离散点和噪声比较敏感。于是,首先对图像进行高斯卷积滤波进行降噪处理,再采用Laplace算子进行边缘检测,就可以提高算子对噪声和离散点的鲁棒性,如此,拉普拉斯高斯算子Log(Laplace of Gaus...

2020-03-24 09:31:23 187 0

原创 能否提高std::string的效率?

在C++里,使用std::string来替代C类型的字符串,这样方便构造和删除,又可以避免C类型的错误。不过,有人说std::string在传送参数时效率低下,比C类型的指针要慢,这种情况是真实的,要改善这种情况,就需要使用C++17里的新类std::wstring_view,这样就可以避免这个问...

2020-03-23 10:55:48 244 0

原创 在OpenCV里学习常见问题汇编18

问题十八:Emboss滤波器 Emboss滤波器常用于检测图像的边缘和轮廓,能够有效地增强图像的高频信息(边缘和轮廓),并保留图像的低频信息(图像内容)。这个滤波器与前面有一点不同,就是保留了图像内容,只是对边缘进行增强,前面很多滤波器只是保留了边缘信息。因此,这个滤波器定义也不一样,如下: ...

2020-03-23 09:59:41 190 0

原创 用Python来构造串口测试程序

对于很多嵌入式工程师来说,经常需要使用各种串口来显示数据和测试,有时候需要自动化地测试命令,使用一般的串口工具就难以满足要求,这时使用Python来写串口程序,就更加方便了。因为它可以根据嵌入式系统发送出来的命令,进行不同的情况处理,可以回应不同的命令。另外也可以使用它来过滤没用的数据,比如关注特...

2020-03-22 18:06:21 862 0

原创 C++里怎么样让类对象删除时自动释放动态分配的内存?

经常有这样的需求,在一个类里一些成员变量需要动态地分配内存,以前是把这个成员声明为指针,然后在构造函数里指定为NULL类型,然后在析构函数里判断这个指针是否分配了内存,如果分配了就进行删除。这种方式需要人工来做,工作量有点大,能否有更加高效的,能否有偷赖的方式呢?这是有的,如下的例子: #in...

2020-03-22 12:25:07 3125 8

原创 C++怎么样使用range-based for

range-based for是C++增加的一个重要特性,大大地加快写循环代码的能力,特别是智能指针,模板等对象的引用。 因此,在所有项目工程里,尽量使用这种方式,不要再使用旧的方式了,具体使用的方式,可以参考下面的代码: // range-based-for.cpp // compile ...

2020-03-22 12:10:49 244 0

原创 在OpenCV里学习常见问题汇编17

问题十七:Laplacian滤波器 前面学习和使用的都是使用一阶微分来检测图像的边缘,这个问题是使用Laplacian滤波器,它是二阶微分计算的滤波器。由于图像是一个二维的方程,可以分别对X和Y进行偏导,计算如下: 接着再对上面的导函数进行二次求导,就可以表示如下: 有了二阶导数之后...

2020-03-22 11:56:53 176 0

原创 在OpenCV里学习常见问题汇编16

问题十六:Prewitt滤波器 Prewitt算子是一种一阶微分算子的边缘检测,利用像素点上下、左右邻点的灰度差,在边缘处达到极值检测边缘,去掉部分伪边缘,对噪声具有平滑作用 。其原理是在图像空间利用两个方向模板与图像进行邻域卷积来完成的,这两个方向模板一个检测水平边缘,一个检测垂直边缘。 在...

2020-03-21 09:13:15 191 0

原创 在OpenCV里学习常见问题汇编15

问题十五:Sobel滤波器 前面使用差分滤波器来检测边缘的特征,这种方法是来源于数学上的微积分,如果在这个基础之上,再加上正态分布,也即是高斯分布,那么就得本文里的Sobel滤波器,因此它也是用来检测图像的边缘,它的3X3的格式定义如下: 使用这个核来与图像的元素进行相乘再来求和,就可以得...

2020-03-20 09:28:33 175 0

原创 在OpenCV里学习常见问题汇编14

问题十四:差分滤波器 首先我们来了解一下什么是差分滤波器,差分就是计算两个元素之差。在图像里主要指按不同的方向进行梯度运算,在离散的图像里其实就是相邻的元素进行相减的动作。差分滤波器可以用来检测图像的边缘,因为在边缘上,像素点的值与不是边缘的值差别很大。这里使用下面的差分滤波器: 在这里采...

2020-03-19 10:41:31 173 0

原创 在OpenCV里学习常见问题汇编13

问题十三:MAX-MIN滤波器 前面学习过均值滤波器,就是取一块窗口里数据的平均值,现在考虑一下,我们来选取这个窗口里的最大值和最小值出来,然后再用它们之间的差值来代替,这种计算方式就叫做MAX-MIN滤波。 图像的细节属于低频信息,图像的边缘属于高频信息,使用一定大小的 Max-Min ...

2020-03-18 17:56:49 178 0

原创 在OpenCV里学习常见问题汇编12

问题十二:Motion Filter 运动滤波一般是用在不同帧之间的视频滤波,这里主要用在同一个图像之间的滤波,比如使用下面的对角线方向上的滤波: 因此在这里需要在程序上先创建一个对角线的矩阵,这个立马就可以想到使用numpy的对角线矩阵产生函数np.diag,函数的定义如下: ...

2020-03-17 08:35:59 378 0

原创 在OpenCV里学习常见问题汇编11

问题十一:均值滤波器 均值滤波也称为线性滤波,其采用的主要方法为邻域平均法。线性滤波的基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点(x,y),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度g...

2020-03-15 12:34:29 220 0

原创 在OpenCV里学习常见问题汇编10

问题十:中值滤波(Median Filter) 中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值. 中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值...

2020-03-15 12:11:19 161 0

原创 在OpenCV里学习常见问题汇编9

问题九:高斯滤波(Gaussian Filter) 滤波的方法有很多种,有均值滤波,这是最简单的一种,因为认为每个元素都有相同的权限,这是最容易理解的,比如学校里使用一班学生的平均分来表示一个班的教学水平,这种方式就是计算方便,理解简单。但是并不是说这种方法就是最好的,因此有人提出中间成绩的应该...

2020-03-14 09:58:49 147 0

原创 在OpenCV里学习常见问题汇编8

问题八:最大池化(Max Pooling) 前面学习过平均池化,里面提到有多种池化的方法,其中使用比较多的是最大池化。那么什么是最大池化呢?最大池化(max-pooling)即取局部接受域中值最大的点。 常用的池化方法有最大池化(max-pooling)和均值池化(mean-pooling)。...

2020-03-14 09:14:47 181 0

原创 在OpenCV里学习常见问题汇编7

问题七:平均池化(Average Pooling) 要解决这个问题,首先要来认识池化(Pooling)这个名词,其实池化就是某一个区域里抽取一个特征值,作为这个区域的代表,不过这个选择的方式有很多种,常用的就有两种,一种是平均值,一种是最大值。池化在神经网络里经常会使用,因为池化有降维的作用,比...

2020-03-12 16:17:57 131 0

原创 在OpenCV里学习常见问题汇编6

问题六:降色处理 这个问题主要把256级表示的颜色转换为4级表示,比如使用32, 96, 160, 224来表示R/G/B的颜色,转换的关系如下: val = { 32 (0 <= val < 63) 96 (63 <= val < 127) 160 (127 ...

2020-03-12 10:21:06 125 0

原创 在OpenCV里学习常见问题汇编5

问题五:HSV变换 这个问题就是要求实现RGB颜色空间转换到HSV颜色空间。HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。这个模型中颜色的参数分别是:色调(H),...

2020-03-12 09:10:06 201 0

原创 在OpenCV里学习常见问题汇编4
原力计划

问题四:大津二值化算法(Otsu's Method) 大津算法,也被称作最大类间方差法,是一种可以自动确定二值化中阈值的算法。这个问题,就是根据大津的算法来实现相应的代码,因此问题的关键就是先要去理解大津法的推导过程,以及问题的定义。为了更好地理解这个算法,参考了国外的文章(http:...

2020-03-11 11:24:08 134 0

原创 在OpenCV里学习常见问题汇编3

问题三:二值化(Thresholding) 把一个图像二值化表示,比如只使用黑和白来表示。而灰度图像表示也有256个级别,比如使用128作为分隔值的二值化: y = 0 if y < 128 else 255 当像素灰度值小于128就设置为0,大于等于128为255。 当图像二值化之...

2020-03-10 15:49:11 127 0

原创 在OpenCV里学习常见问题汇编2

问题二:灰度化(Grayscale) 在图像处理里,经常需要把彩色图像转换为灰度图像,原因何在?是因为彩色图像太复杂了,三种通道来判断边缘是比较复杂的。目前这个问题,就是怎么样把三种颜色通道图像转换为灰度,它是根据一个公式: Y = 0.2126 R + 0.7152 G + 0.0722 B...

2020-03-10 12:00:37 144 0

原创 在OpenCV里学习常见问题汇编1

在学习OpenCV里,经常会遇到一些问题,这是好事,说明平时对这些问题没有学习透,在这里把这些问题汇总到一起。尽量参考一下网上所有资源,进行一轮总结,让大家可以通过问题进行学习。这种方法是先提出问题,然后自己去思考答案,如果想出来就可以不看答案,如果想不出来就要看一下答案,这样会把自己已知的和未知...

2020-03-10 11:21:15 188 0

原创 vs2017 社区版本离线下载安装包

由于国内访问国外的服务器比较慢,或者一个公司里有许多人要安装VS2017版本,如果每次都需要从微软的服务器进行下载,显然是不合理的要求,一是速度太慢,二是经常占用公司的网络资源,都是不合算的。为此,我们需要制作VS2017的离线安装包,那么怎么样来处理这个问题呢? 首先要从微软的网站上下载v...

2020-03-09 08:54:14 468 0

原创 在OpenCV里车牌识别的方法3

前面已经学习过两种车牌识别的定位方法,现来学习第三种方法,这种方法比前面的方法更加复杂一些,还可以识别颜色出来。比如要识别下面的车牌: 可以看到这个是新能源的车牌,它的背景颜色不一样,是绿色的。在这里首先读取图像输入,如下: img = cv2.imread('sznb_006....

2020-03-08 13:01:43 159 0

原创 在OpenCV里车牌识别的方法2

前面已经学了一种方法来进行车牌定位,它是通过直接把原图转换为灰度图片,就可以进行查找轮廓的方法,但是这种方法有时不起作用,就要采用另外一个方法进行识别定位。由于每个国家的车牌都是有颜色指定的,比如中国大多数小车都是蓝色车牌,那么就可以根据颜色来定位了。比如下面的车牌: 可以看到车牌是蓝色为底...

2020-03-07 17:35:12 230 0

原创 在OpenCV里车牌识别的方法1

前面进行了手写数字的识别,自然而然就想到车牌识别,其实车牌的识别与手写数字识别是很相似的,不过它的难点是在于怎么样定位和分割车牌号出来,由于角度不同,或者车牌的颜色不同,会需要使用不同的方案。现在先来学习第一种方案,采用轮廓直接可以识别出来的方案,这个是最简单的方案。你也许会问如果这个方案识别不出...

2020-03-05 17:58:29 571 0

原创 在OpenCV里使用机器学习库sklearn 实现手写数字识别2

前一部分已经学习过怎么使用LinearSVC来训练手写识别的模型,并且保存在文件名称mysvm.cpickle里,接着下来就是使用这个训练的模型来进行识别,那么这个过程又是怎么样实现的呢?可以想像到,首先要把磁盘里保存的模型加载出来,然后再把要识别的图像进行与训练相同的处理,最后才可以放到模型里进...

2020-03-05 09:12:48 219 0

原创 在OpenCV里使用机器学习库sklearn 实现手写数字识别1

前面学习过KNN的方式来实现手写数字识别,不过效果一般,那么有没有别的方法来试一试,或许可以改进一点呢。在本文里将要介绍使用SVM和HOG的方式来实现手写数字识别,比如最终结果如下图: 在这个例子里与前面《在OpenCV里用kNN实现手写数字识别》大体流程是一样的,主要区别在于这里采用ski...

2020-03-03 16:03:11 244 0

原创 在OpenCV里用kNN实现手写数字识别

在前面已经学习过怎么让kNN训练识别数字,并且进行了测试,如果你想不起的话,可以参考下文: 《在OpenCV里用kNN实现MNIST》 https://blog.csdn.net/caimouse/article/details/104227344 有很多人问我,怎么样才可以把kNN算法...

2020-03-01 20:54:42 210 0

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