自定义博客皮肤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 10674 2

原创 智能指针的动态数组的使用

在C++编程里,最基本的操作就是内存分配和删除,也即是内存管理,这个特性是C++的主要优点也是缺点,为什么这样说呢?因为管理得好,是性能提升很高,其它语言是无法比拟的,管理不好就是坏处一大堆,比如内存泄漏,这样的问题常常会导致程序运行一段时就会死掉,因为内存不断地分配而没有删除,并且要找到那里分配...

2020-07-27 09:12:01 99 0

原创 你可以输在人生起跑点,但决不能输在人生转折点

某日,“人生”与“机遇”碰在了一起,“人生”说:“你是我的属下,是我促使你能够被人们所接受,所以你要服从我。” “机遇”不服气,反驳说:“我们是互相依存的,没有我,你就不会有闪光点。” “人生”说:“离开你我依旧会有闪光点!我不需要你。” 二者争论不休,话不投机。于是,“机遇”离“人生”而远...

2020-07-07 18:39:45 325 0

原创 致2020年的高考:教育改变命运

今年注定是不平凡的一年,因为今年上半年就经历了很多前所未闻的事情,前所没有想到的事情,这些事情深刻地影响到今年和以后的生活。特别今年高考的学生更加不平凡,往年的高考时间早已经就完成了,但是今年整整地推迟一个月才考,意味着大家多了一个月的时间复习知识。 但是很多人在想“上了好大学,是不是将来就...

2020-07-06 18:13:35 347 0

原创 闲聊操作系统(2)

继续来闲聊一下操作系统,很多人都使用过操作系统,但要精确给出操作系统的定义却很困难,部分原因是操作系统具备两种特别的功能实现。 对于多数计算机来说,在机器语言这一级的体系结构上编程是很困难的,因为需要开发人员熟悉指令集、存储结构、I/O的定义和总线结构,尤其是输入输出操作。 比如我们常用的...

2020-07-06 12:04:15 160 0

原创 闲聊操作系统(1)

由于近来这段时间主要关注嵌入式操作系统,那么就来闲聊一下操作系统,也可以增加一些基本常识,这样对于嵌入式linux开发是有益的,也可以增广系统的知识。 计算机科学的迅速发展是20世纪科学发展史上最伟大的事件之一,直到目前21世纪20年代,还在高速地发展,没有看到停止的状态,特别是AI的发展。...

2020-07-05 14:00:53 928 0

原创 准备嵌入式Linux开发环境

无论做什么事情之前,都需要准备好工具,俗话说得好磨刀不误砍柴功。接着下来要进行嵌入式Linux的开发,那么什么才是最基本的工具呢?前面已经说了开发板,具备了开发的第一步,接着下来就是需要编写程序、编译程序和烧录程序的工具了。因为刚刚有开发板是不能解决问题,开发板就像做饭的米,但是要把饭做好,还需要...

2020-07-04 11:32:28 380 0

原创 学习嵌入式开发是需要忍耐

当我们在学习任何知识过程中,都是需要忍耐的性格,特别是在嵌入式开发的学习过程中更加需要这个忍耐的特性。因为嵌入式系统更加具有隐蔽性,它的响应和显示不像应用程序那么具体,也不像界面程序那样触手可及。在学习嵌入式开发之前,先要让自己的思想作一些准备,因此来学习一下下面这个故事来帮助一下自己的认识,当你...

2020-06-24 10:50:57 409 0

原创 在VC里实现长按键时,解决窗口不更新的问题

在修改一个老程序时,发现有这样一个问题,当按下一次向下或向上方向键时窗口里的数据可以向上或向下滚动一条,也会立即更新到窗口里显示。但是,当长按,不弹起按键时,就会发现数据有滚动,但窗口不更新的现象。这种现象就会给客户一种假死的感觉,体验非常不好。为了解决这个问题,仔细地看了一下VC里MFC的消息体...

2020-06-19 10:17:28 251 0

原创 使用C++智能指针的树结构的问题

现在C++17版本里,基本上都是使用智能指针了。 在std::shared_ptr被引入之前,C++标准库中实现的用于管理资源的智能指针只有std::auto_ptr一个而已。std::auto_ptr的作用非常有限,因为它存在被管理资源的所有权转移问题。这导致多个std::auto_ptr...

2020-06-12 16:27:13 189 0

原创 外国软件被禁用之后,怎么解决?

昨天看到微信朋友圈里一大波刷屏,哈工大和哈工程被MATLAB公司禁用了,即使是已经购买过的软件。这种事件很可怕,如果有一天所有外国软件被禁用了,怎么办呢?难道就放任不管吗?那么未来中国的软件又应该怎么样使用国外的软件呢? 以前大家都不会担心这种事情,认为是市场经济,有钱就可以买到的,但现实很打脸...

2020-06-12 08:55:20 1104 0

原创 嵌入式Linux学习选择什么样的开发板?

无论谁都会面临着这个选择的问题,因为总需要一块开发板来调试,来测试系统,没有开发板是学不会嵌入式软件开发的,就像学习游泳的人,从来不下水一样,怎么可能学会游泳呢。既然要选择一块开发板,一定要选择一块稳定的,当然不能最新的开发板,因为最新的,一般来说不太稳定。第二个条件就是开源的,如果没有开源的代码...

2020-06-10 21:44:37 533 0

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

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

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

原创 为什么要嵌入式Linux

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

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

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

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

2020-05-30 21:09:41 1687 4

原创 Linux访问Windows共享目录

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

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

原创 代码与牙痛(二)

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

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

原创 代码与牙痛

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

2020-05-12 20:53:48 304 1

原创 使用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 431 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

原创 在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

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