自定义博客皮肤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--用软件来改变世界

原创 老蔡学堂

优惠大卖,全部课程(任选5门)一口价:49元,需要请发送邮件:9073204@qq.com 玩转人工智能库-深入浅出OpenCVhttps://edu.csdn.net/course/detail/26616 单片机编译器之链接器 https://edu.csdn.net/course/de...

2016-06-24 07:13:24 10116 2

原创 嵌入式的上位机界面测试例子

在开发嵌入式软件时,经常要使用一些界面测试例子,如果让别人帮忙开发,当然是比较好的事情,但是在小公司,或者功能不是太复杂时,协调成本太高时,就要自己去开发一些界面测试例子了,这样会大大地提高开发效率。因此,本文主要来实现linux里的python界面开发,在这里使用开源的界面库wxpython。由...

2020-05-31 23:02:00 119 0

原创 为什么要嵌入式Linux

随着技术的发展,嵌入式的硬件越来越好,价格越来越便宜,可以开发的功能也越来越多,要求完成的功能越来越快,面对这样的需求,就需要使用更好的平台,嵌入式的linux就是这样的平台,并且这个平台是不收钱的,开发文档也多,从业人员也多。因此学习嵌入式linux已经成为基本的要求了。 当然,如果只是开发简...

2020-05-31 17:11:40 118 0

原创 在linux里安装python3.8.3版本

由于旧版本的linux里安装的是3.5版本,现在官方已经升级最新的版本了,为了跟上了最新的科技,跟上最新步伐,那么就需要与时俱进,安装和使用最新的版本。下面就来记录一下升级python3.8.3版本的过程。 第一步是先安装依赖包: sudo apt install zlib-devel bzip2...

2020-05-30 21:09:41 139 0

原创 Linux访问Windows共享目录

近来要使用Linux来开发一些程序,需要从百度云盘上下载一个大的开发源码包,由于在ubuntu 16.04上运行百度网盘软件失败,只能到win上下载,下载完之后,发现这个文件比较大,居然有6G大小,那么就需要从win上拷贝到linux的开发电脑上。这时就需要访问win上的共享目录,那么linux上...

2020-05-30 18:31:20 60 0

原创 代码与牙痛(二)

前面已经说过牙痛虽然是小病,但是它的痛直接影响到大脑的,并且以最快的速度,持续地刺激大脑,导致坐卧不安,根本没办法去写代码。另外由于写代码的过程,也是精神比较集中,常常是咬紧牙根地工作,导致吞口水的机会都少,因此一定要注意口腔卫生,否则更加容易得牙痛。特别在软件开发行业,由于使用大脑太多,会导致脑...

2020-05-17 20:08:22 127 0

原创 代码与牙痛

前几周,加班写一些代码,第二天起床,就感觉牙有点不舒服。刚开始不感觉到怎么痛,因而不太理会它。继续写了几天代码,接着发现牙齿越来越痛了。有一句话很多出名”牙痛不是病,痛起来真要命!“,因此当晚怎么也睡不着,更不要说写代码了,就这样开始耽误项目的延期了。这种痛,坐不得,睡不得,行也不得。因为牙痛直接...

2020-05-12 20:53:48 216 0

原创 使用C++17编译时出错:error C2872: 'byte': ambiguous symbol

现在已经是2020年了,因此使用C++的标准要提高到C++17的方式,因为C++17提高了不少性能,在语言上改进也很多。这样需要在VC2017或VC2019里使用下面的设置来使用C++17的标准: 主要设置C++ Language Standard: ISO C++ 17 设置完成之后,就...

2020-05-11 09:49:42 177 0

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

问题三十五:傅立叶变换——带通滤波 前面进行高通滤波和低通滤波,如果联合这两个联波,但是中间又留出一些空间,就叫做带通滤波,有点像下面的圆环: 将图像灰度化之后进行傅立叶变换并进行带通滤波,之后再用傅立叶逆变换复原。在这里,我们使用可以保留介于低频成分和高频成分之间的分量的带通滤波器。 ...

2020-04-24 10:49:41 213 0

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

问题三十四:傅立叶变换——高通滤波 前面一个问题,主要进行低通滤波,现在这个问题与前面一个问题刚好相反,它是禁止低频部分信息,而允许高频部分通过。高频部分在图像里就是图像的边缘像素,因为这部分像素变化比较大。因此,高通滤波是识别图像边缘的一种方法。 如果理解前面的例子代码,这里就比较简单,它主...

2020-04-12 18:35:14 223 0

原创 使用std::function来实现不同类的函数回调

在开发软件过程中,经常会遇到这样的需求,设计一个类Call来进行通用的逻辑处理,但是需要调用另外一个类A,或B中一些函数,这时就不能直接传送类A或类B的指针进来了,如果在以往一般采用静态函数,或者类A和类B是继承关系采用多态来实现。目前可以采用std::function来实现函数对象的调用,也可以...

2020-04-11 19:17:40 199 0

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

问题三十三:傅里叶变换——低通滤波 这个问题是先把图像进行傅里叶变换,然后进行低通滤波,由于傅里叶变换之后,图像的低频集中一处,这样给我们根据频率进行滤波的机会,整个过程如下图: 根据前面一个问题的例子,可以看到傅里叶变换之后,低频部分在图像的左上角,因此需要把频谱图像进行平移和对称构造,...

2020-04-06 10:08:56 211 0

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

问题三十二:傅里叶变换(Fourier Transform) 这个问题主要实现二维的傅里叶变换和逆变换。要解决这个问题,有两种方法,一种是采用Numpy里的方法来计算,另外一个是采用公式来自己实现计算。 下面来看一下使用Numpy的计算方法: f_img = np.fft.fft2(gray...

2020-04-05 11:14:47 169 0

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

问题三十一:仿射变换(Afine Transformations)——倾斜 对一个图片进行倾斜,对X轴方向进行30度倾斜,对Y轴方向进行30度倾斜,如下公式: 倾斜的关键是在于对齐次坐标变换矩阵进行改变,从上面可以看到,在X轴方向的倾斜,其实是在a的位置设置一个值。而在Y轴方向的倾斜也是按...

2020-04-04 10:38:40 157 0

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

问题三十:仿射变换( Afine Transformations )——旋转 这个问题就是怎么样对图像进行旋转变换,有了前面的齐次坐标变换,就可以采用相同的公式: 总公式是这样: 这里角度A就是旋转的角度。 输入的原图 进行旋转30度后的图片 这个例子里的代码与前面缩放...

2020-04-03 12:06:45 178 0

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

问题二十九:仿射变换( Afine Transformations )——放大缩小 这个问题与前的问题其实是一样的解决方案,就是对矩阵进行相乘,对像素所在的坐标进行变换。现在想对图像在X轴方向放大1.3倍,在Y轴上缩小0.8倍,并且进行前面的平移操作,可以根据仿射变换公式: 根据这个变换公...

2020-04-02 11:42:16 154 0

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

问题二十八:仿射变换( Afine Transformations )——平行移动 这个问题要求把图像在X轴上方向移动30个像素,在Y轴上方向减少30个像素,因此这个需要使用仿射变换公式,如下: 在这个公式里只是平移变换,需要把这些系数改为下面这样: 其实就是变成这样: x_new...

2020-04-01 11:35:58 142 0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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