- 博客(91)
- 收藏
- 关注
原创 day19 - 使用高通滤波提取图像边缘
在OpenCV中,对于图像或者视频的处理都或多或少的会涉及傅里叶变换的概念。在数学上,傅里叶变换是指所有的波形都可以由一系列简单且频率不同的正弦曲线叠加得到。也就是说,人们所看到的波形都是由其他波形叠加得到的。这个概念对操作图像非常重要,因为这样我们可以区分图像哪些区域的图像像素值变化特别强,哪些区域变化不那么强,从而可以任意得标记噪声区域、感兴趣的区域、前景和背景等。本期我们主要来介绍傅里叶变换在图像处理中的应用,学习使用高通滤波提取图像边缘。
2023-05-25 09:50:00 1382
原创 day18 - 使用直方图提高图像对比度
本期将使用图像直方图的相关知识来提高图像对比度,对图像进行优化,从而提高图像清晰度。若要运行案例代码,你需要有:操作系统:Ubuntu 16 以上 或者 Windows10工具软件:VScode 或者其他源码编辑器硬件环境:无特殊要求核心库:python 3.6.13, opencv-contrib-python 3.4.11.39,opencv-python 3.4.2.16。
2023-05-25 09:46:48 1310
原创 day17 - 用形状包围图像
在进行图像轮廓提取时,有的情况下不需要我们提取出精确的轮廓,只要提取出一个接近于轮廓的近似多边形,就可以满足后续的操作。本期我们来学习如何通过设置参数来找出图像的近似多边形。若要运行案例代码,你需要有:操作系统:Ubuntu 16 以上 或者 Windows10工具软件:VScode 或者其他源码编辑器硬件环境:无特殊要求核心库:python 3.6.13, opencv-contrib-python 3.4.11.39,opencv-python 3.4.2.16。
2023-05-25 09:45:34 569
原创 day16 - 提取图像前景
在我们平时使用购物软件是会发现通常在搜索框右侧都会有一个相机的标志,这个标志是可以让用户通过图片来搜索自己需要购买的内容。拍照购物将用户拍摄的商品与商品图库的图像进行对比,找到最为相似的商品。但是由于用户拍摄的图像是任意的随机的,不可能与商家的商品图完全吻合,复杂的商品背景对拍照购物造成了很大的影响,商品与背景图像的分离技术成为了技术的关键。本期我们来学习使用图像轮廓相关的技术来实现图像前景的提取。若要运行案例代码,你需要有:操作系统:Ubuntu 16 以上 或者 Windows10。
2023-05-25 09:43:05 376
原创 day15 - 使用图像金字塔进行图像拼接
将原图像复制,作为第一张图像;高斯平滑处理;下采样操作;循环上面两步操作,并将得到的图像储存至列表中。代码实现。
2023-05-25 09:39:51 2154 1
原创 day14 - 提取图像信息
本期主要介绍图像的礼帽运算和黑帽运算,礼帽运算常用于获取原始图像的噪声信息,或者得到比原始图像的边缘更亮的边缘信息;黑帽运算常用来检测图像中的波谷结构,分离比邻近点暗一些的斑块,比如得到轮廓效果图。完成本期内容,你可以:了解图像礼帽运算的原理和应用了解图像黑帽运算的原理和应用学会使用礼帽运算进行图像处理学会使用黑帽运算进行图像处理若要运行案例代码,你需要有:操作系统:Ubuntu 16 以上 或者 Windows10工具软件:VScode 或者其他源码编辑器硬件环境:无特殊要求。
2023-05-25 09:36:05 1247
原创 day13 - 对指纹图片进行噪声消除
在指纹识别的过程中,指纹图片通常都是现场采集的,受环境的影响会有产生很多的噪声点,如果直接使用,会对指纹的识别产生很大的影响,而指纹识别的应用场景又都是一些比较严肃不容有错的场合,所以去除噪声又不损坏原始图像的结构就显得更为重要。本期我们介绍使用图像的开、闭运算进行指纹图片的噪声消除。完成本期内容,你可以:了解图像开、闭运算的原理和应用掌握使用图像开、闭运算的使用若要运行案例代码,你需要有:操作系统:Ubuntu 16 以上 或者 Windows10工具软件:VScode 或者其他源码编辑器。
2023-05-25 09:33:40 2237
原创 day12 - 图像修复
在图像处理的过程中,经常会遇到图像存在多余的线条或者噪声的情况,对于这种情况我们会先对图像进行预处理,去除掉对图形内容有影响的噪声,在进行后续的处理。本节实验我们介绍使用图像膨胀来处理图形的多余线条,进行图像修复。完成本期内容,你可以:了解图像膨胀的原理和应用掌握使用图像膨胀操作的使用若要运行案例代码,你需要有:操作系统:Ubuntu 16 以上 或者 Windows10工具软件:VScode 或者其他源码编辑器硬件环境:无特殊要求。
2023-05-25 09:33:12 1355
原创 day11 - 手写数字笔迹细化
对于手写数字识别实验中,经常会遇到因为笔迹较粗导致误识别的情况,所以我们通常会先将笔迹进行细化,笔迹变细以后,数字的特征会更明显,后续进行识别的准确率就会更高。例如数字7 和 1 ,因为书写习惯的不同,在识别图像如果使用原始图像,笔迹较粗,经常会识别错误,但是经过腐蚀操作,笔迹变细以后,会很容易将二者区分开。本期我们重点学习图像的腐蚀操作,通过图像腐蚀来将手写数字的笔迹进行细化。
2023-05-25 09:28:25 1140
原创 day10 - 使用canny算子进行人像勾勒
本期主要介绍canny算子,了解canny算子的流程以及各个流程的原理和实现。若要运行案例代码,你需要有:操作系统:Ubuntu 16 以上 或者 Windows10工具软件:VScode 或者其他源码编辑器硬件环境:无特殊要求核心库:python 3.6.13, opencv-contrib-python 3.4.11.39,opencv-python 3.4.2.16。
2023-05-24 14:45:02 1546
原创 day9 - 对花朵图像进行边缘检测
本期主要介绍常用于进行图像边缘检测的滤波器(算子):Sobel算子、Scharr算子、Laplacian算子;通过实验比较不同的算子的处理效果以及使用场景。完成本期内容,你可以:了解图像梯度的原理和应用掌握使用Sobel算子、Scharr算子、Laplacian算子进行边缘检测若要运行案例代码,你需要有:操作系统:Ubuntu 16 以上 或者 Windows10工具软件:VScode 或者其他源码编辑器硬件环境:无特殊要求。
2023-05-24 14:43:28 1445
原创 day8 - 使用不同的滤波核进行图像降噪
OpenCV中提供了函数来实现自定义滤波器。函数原型: dst = cv2.filter2D( src, ddepth, kernel, anchor, delta, borderType )dst为输出图像。参数描述src被处理的图像ddepth结果图像的图像深度,可以用-1表示与原始图像相同kernel卷积核,是个单通道的数组anchor可选参数,滤波核的锚点delta可选参数,修正值borderType可选参数,边界样式,建议采用默认值。
2023-05-24 14:40:33 1743
原创 day7 - 使用几何变换让图像动起来
本期将了解图像的几何变换。几何变换是指改变图像的几何结构,例如大小、角度和形状等,让图像呈现出缩放、翻转、映射和透视的效果。若要运行案例代码,你需要有:操作系统:Ubuntu 16 以上 或者 Windows10工具软件:VScode 或者其他源码编辑器硬件环境:无特殊要求核心库:python 3.6.13, opencv-contrib-python 3.4.11.39,opencv-python 3.4.2.16。
2023-05-24 14:35:39 1107
原创 day6 - 使用图像运算进行图像美化
本期将了解图像的基础运算,包含算数运算和位运算等。我们所使用的图像处理技术其实都是靠一些简单的基础运算来完成的,例如加法运算、位运算等,这些简单运算是我们后续研究更复杂的图像处理的基础。若要运行案例代码,你需要有:操作系统:Ubuntu 16 以上 或者 Windows10工具软件:VScode 或者其他源码编辑器硬件环境:无特殊要求核心库:python 3.6.13, opencv-contrib-python 3.4.11.39,opencv-python 3.4.2.16。
2023-05-24 14:28:09 790
原创 day5 - 利用阈值勾勒
阈值处理在计算机视觉技术中占有十分重要的位置,他是很多高级算法的底层逻辑之一。本实验将练习使用图像阈值处理技术来处理不同的情况的图像,并获得图像轮廓。完成本期内容,你可以:了解图像阈值处理技术的定义和作用掌握各阈值处理技术的原理了解自适应阈值处理的使用场景学会选择合适的阈值处理方式若要运行案例代码,你需要有:操作系统:Ubuntu 16 以上 或者 Windows10工具软件:VScode 或者其他源码编辑器硬件环境:无特殊要求。
2023-05-24 14:23:36 1519
原创 day4 - 使用图像绘制动态时钟
本期的主要内容是利用OpenCV中包含的绘图函数,例如绘制线段、绘制矩形、绘制圆形等来绘制一个动态时钟的表盘。完成本期内容,你可以:掌握OpenCV常见的绘图函数学会使用绘图函数绘制简单的图像若要运行案例代码,你需要有:操作系统:Ubuntu 16 以上 或者 Windows10工具软件:VScode 或者其他源码编辑器硬件环境:无特殊要求核心库:python 3.6.13, opencv-contrib-python 3.4.11.39,opencv-python 3.4.2.16。
2023-05-24 14:10:28 890
原创 day3 - 图像在不同色彩空间间的转换
本期将了解三种不同的颜色空间,RGB,HSV,GRAY。会使用OpenCV来读取三种颜色空间,并且操作不同空间的转换,观察不同颜色空间的特点。完成本期内容,你可以:了解RGB,HSV,GRAY三种颜色空间的定义掌握读取图片到不同的颜色空间掌握三种颜色空间的转换掌握如何拆分、合并图像通道若要运行案例代码,你需要有:操作系统:Ubuntu 16 以上 或者 Windows10工具软件:VScode 或者其他源码编辑器硬件环境:无特殊要求。
2023-05-24 13:58:38 1621
原创 day2 - 使用OpenCV进行图像的读取与展示
本期将使用OpenCV对图像进行一些基本的了解和操作:主要包含图像的读取、展示和保存,以及查看图像的基本属性,让我们充分的了解图像,为后续图像处理做准备。完成本期内容,你可以:会使用OpenCV对图像进行读取、展示、保存等基本操作学会查看图像的基本属性若要运行案例代码,你需要有:操作系统:Ubuntu 16 以上 或者 Windows10工具软件:VScode 或者其他源码编辑器硬件环境:无特殊要求。
2023-05-24 13:50:15 1527
原创 day1 - OpenCV安装与环境配置
OpenCV是一个开放源代码的计算机视觉应用平台,由英特尔公司下属研发中心俄罗斯团队发起该项目,开源BSD证书,OpenCV的目标是实现实时计算机视觉,是一个跨平台的计算机视觉库。从开发之日起就得到了迅猛发展,获得了众多公司和业界大牛的鼎力支持与贡献,因为是BSD开源许可,因此可以免费应用在科研和商业应用领域。OpenCV的体系结构如图所示:CORE–核心功能模块opencv 基本数据结构、动态数据结构、绘图函数、数组操作相关函数、辅助功能与系统函数和宏、与OpenGL的互操作。
2023-05-24 13:44:32 1771
原创 026 - C++ 可见性
现在人们对于可见性的争论有很多,我建议你坚持自己的想法和习惯。有些人总是将变量写成私有的,然后搞一个公共的 getter 或者 setter ,这也是我强烈反对的一种操作。你可以把你的想法发在评论区,本期就到这里,下期再见。
2023-05-06 15:44:47 758
原创 025 - C++ 接口(纯虚函数)
这就是纯虚函数整个的工作原理,它知道任何 Printable 的东西,它们都有一个 GetClassName 函数去调用,如果你不实现这个函数,你就不能实例化这个类。这就是 C++ 中的接口,也就是 C++ 中的纯虚函数,它是非常有用的一个工具,可以被用在刚才的这个场景下,如果想要确保类都有一个特定的方法,那么可以将这个类作为参数放入一个通用的函数中,然后就可以调用这个方法或者做其他事情。本期内容就是这些,下期再见。
2023-05-05 17:17:22 650
原创 024 - C++ 虚函数
这就是虚函数的本质,但是很遗憾的一点是,虚函数并不是没有额外的开销的,有两种与虚函数相关的运行时成本。首先,我们需要额外的内存来存储 V 表,这样我们就可以分配到正确的函数,包括基类中要有一个成员指针指向 V 表;其次,每次我们调用虚函数时,我们需要遍历这个表来确定要映射到哪个函数,这些是额外的性能损失。由于这些成本,很多人不喜欢使用虚函数,但是我使用的过程中,没有遇到开销特别大的情况。就我个人而言,我经常使用它,可能在一些嵌入式平台上,CPU性能很差的时候需要避免使用虚函数。
2023-05-04 17:35:23 463
原创 023 - C++ 继承
在本系列课程中我们将分解所有与面向对象编程相关的独立概念,多态、继承等等。所有这些概念都值得好好研究。如果将整个体系如果比喻成一个物件,我还只是接触到了它的表面而已。好了,本期的内容就是这些,下期再见。
2023-04-26 10:55:45 451
原创 手把手带你修复老照片
你家里是否有很多带着故事的老照片呢?随着时间的流逝,这些照片难免会变模糊,或者有了划痕,今天给大家介绍一种使用程序修复老照片的方法。修复效果如下图所示:我们需要在电脑中下载安装程序运行环境、修复程序、预训练模型、相关依赖等。这些资料在文末的资源包中都可以找到,且都已经搭建完成,可以直接使用,下载链接在文末。
2023-04-25 21:29:59 1568 3
原创 022 - C++ 析构函数
上期我们讨论了构造函数。认识了它是什么以及如何使用它。如果你没有看上一期,那么你一定要回去看一下。今天我们要讨论一下它的“孪生兄弟”,,它们在某些方面非常相似。构造函数是你创建一个新的实例对象时运行,而析构函数是在销毁对象时运行。所以当一个对象要被销毁时,析构函数会被调用。构造函数通常是用于设置变量或做任何你需要的初始化,对应的析构函数是用于卸载变量等东西,清理你使用过的内存。析构函数同时适用于栈和堆分配的对象。如果你使用 New 分配一个对象,当你调用 delete 时析构函数也会被调用。
2023-04-25 10:19:20 414
原创 021 - C++ 构造函数
还有一些特殊类型的构造函数,如复制构造函数、移动构造函数等。它们每一个都会单独有一期,因为它们都很复杂。这就是构造函数的基本使用了,记住一句话就行:它是一个特殊的方法,在你创建类的实例时运行,主要用途是初始化该类。当你创建一个新对象实例时,构造函数确保你初始化的所有内存,完成你所有需要做的设置。本期就是这些。如果你有什么想法,可以放在评论区哈,下期再见。
2023-04-24 10:40:26 423
原创 020 - C++ 枚举
好了,枚举的本质就是让我们的编码更容易,让我们的代码更干净。在枚举的后面其实就是整数,你可以把它们用在很多地方。枚举有很多很多用途,我们将在以后的细节中介绍(有可能还会有一个专门介绍枚举类的一期)。好了,记住:如果你有一个数值集合想要用数字来表示它们,那么枚举就是你想要的。下期再见。
2023-04-22 22:57:46 406
原创 019 - C++ 中的局部静态(local static)
这是一个很好的例子。当你想这样用的时候,不一定非要用单例类。可以通过替换掉初始化函数来实现。例如,你可能需要在程序中的某处调用一个静态初始化函数来创建所有对象。你就可以使用静态 get 方法之类的东西,在很多情况下用它来简化代码。你可以看到它有很多用途,真的很好用,所以请多多练习使用它。以上是我使用过程中的一些想法,大家有什么别的看法可以发在评论区哈。下期再见。
2023-04-21 23:15:32 935 1
原创 018 - C++ 类和结构体中的静态(static)
我希望我把相关的内容都讲清楚了。下期我们看看如何将许多的 static 知识整合了到我们一直在研究的 log 类中,看看那会变成是什么样子。你可以先去看一下如何写一个 C++ 类那期。随着系列的进行,我们会继续增加 log 类的内容,并发掘一些我们可以做的新事情,并在学习新概念的同时不断改进它。好了,记住,static 对于那些静态数据非常有用,这些数据不会在类实例之间发生变化。本期的内容就是这些,下期再见。
2023-04-20 09:58:26 1789 4
原创 017 - C++ 中的静态(static)
那么我们使用 static 的理由是什么呢?你可以参考一下我们为什么要在类中使用 private?如果你不需要变量是全局变量,你就需要尽可能多的使用静态变量。一旦在全局作用域下声明了东西,如果没有设定为static,链接器将会跨编译单元进行链接。这意味着你已经创建了一个完全全局的变量,它可以在任何地方使用,这可能会导致一些非常糟糕的 bug。归根到底,全局变量是不好的。我不太喜欢用全局变量,也不建议你使用。除非你真的需要他们跨转换单元链接。好了,本期的内容就是这些,下期再见。
2023-04-18 20:47:38 522
原创 016 - 如何写一个 C++ 类
到目前为止,我们学了类 class,本期我们要尝试着从头开始写一个类。本期不会讲的太深。我们不会写非常复杂的类,我们要会完成一个基本的 log 类,来演示一下我们已经学过的相关知识。接下来的几期,我们会继续学习类。并引入一些新的概念。所以你会看到从一个基本版本的类到一个做同样事情的更高级版本的类的过程和区别。它们是更为完整的代码。让我们来开始写我们的 log 类。
2023-04-16 21:14:45 792 3
原创 015 - C++ 类与结构体对比
今天这期我们主要解决一个问题,就是 C++ 中的类和结构体有什么区别。上一期我们讲类的时候, 我们对类有了一些基本的介绍,在本期的学习开始之前你可以先看看那一期。本期我们有两个术语,结构体,它是 structure 的缩写,以及类 class。它们的用法看起来有点相似,很多人都会困惑他们之间的区别。你是应该使用 struct,还是应该使用一个 class,本期内容我们将搞清楚这些。区别是这样的,——基本上没有区别。真的,它们之间只有一个关于的小区别。
2023-04-15 22:17:40 489
原创 用Keras单层网络预测银行客户流失率
已知一批客户数据,来预测某个银行的客户是否流失。通过学习历史数据,如果机器能判断出哪些客户很有可能在未来两年内结束在银行的业务(这当然是银行所不希望看到的),那么银行就可以采取相应的、有针对性的措施来挽留这些高流失风险的客户,本质上都是分类,我们看看神经网络来解决这类问题有何优势。
2023-04-15 11:49:02 862
原创 014 - C++ 类
本期我们要讲的是 C++ 中的类。我们终于讲到了,这是一种非常流行的编程方式,面向对象编程实际上只是一种你可以采用的编写代码的方式,其他语言例如 C#、Java 这些主要是面向对象的语言,事实上,用这些语言你真的不能写任何其他类型的代码,尽管你也可以尝试这样做,因为最终这些语言都是面向对象的语言,C++ 有点不同,因为它并没有强加给你一种特定的风格。
2023-04-14 15:07:24 438
原创 逻辑回归预测泰坦尼克号乘客生存率
RMS泰坦尼克号的沉没是历史上最臭名昭着的沉船之一。1912年4月15日,在她的处女航中,泰坦尼克号在与冰山相撞后沉没,在2224名乘客和机组人员中造成1502人死亡。这场耸人听闻的悲剧震惊了国际社会,并导致了更好的船舶安全规定。造成海难失事的原因之一是乘客和机组人员没有足够的救生艇。尽管幸存下沉有一些运气因素,但有些人比其他人更容易生存,比如女人,孩子和上流社会。在这个挑战中,我们要完成对哪些人可能存活的分析。特别是,我们要运用机器学习工具来预测哪些乘客幸免于悲剧。
2023-04-14 10:49:27 2031 3
原创 使用线性回归预测网店的销售额
已经把故去每周的广告投放金额和销售数据整理成一个Excel表格,并保存为advertising.csv文件(这是以逗号为分隔符的一种文件格式,比较容易被python读取)。基本上每周的各种广告投放金额和商品销售额都记录在案。过去每周的广告投放金额和商品销售额的清单(原始格式)这个重要的数据记录是实现本实验的机器学习项目的基础。微信公众号广告投放金额(下文中用"微信"代指)、微博广告投放金额(下文中用“微博”代指)、其他类型广告投放金额(下文用“其他”代指),这3个字段是特征(也是开店的人可以调整的)。
2023-04-14 10:44:48 2645
原创 Voting_Averaging算法预测银行客户流失率
为了防止银行的客户流失,通过数据分析,识别并可视化哪些因素导致了客户流失,并通过建立一个预测模型,识别客户是否会流失,流失的概率有多大。以便银行的客户服务部门更加有针对性的去挽留这些流失的客户。本任务的实践内容包括:1、学习并熟悉Voting/Averaging算法原理。2、使用Voting、Averaging算法预测银行客户流失率。
2023-04-14 10:33:54 735
原创 Stacking算法预测银行客户流失率
为了防止银行的客户流失,通过数据分析,识别并可视化哪些因素导致了客户流失,并通过建立一个预测模型,识别客户是否会流失,流失的概率有多大。以便银行的客户服务部门更加有针对性的去挽留这些流失的客户。本任务的实践内容包括:1、学习并熟悉Stacking/Blending算法原理。2、使用Stacking算法预测银行客户流失率。
2023-04-14 10:32:05 1183
原创 Boosting算法预测银行客户流失率
为了防止银行的客户流失,通过数据分析,识别并可视化哪些因素导致了客户流失,并通过建立一个预测模型,识别客户是否会流失,流失的概率有多大。以便银行的客户服务部门更加有针对性的去挽留这些流失的客户。本任务的实践内容包括:1、学习并熟悉Boosting算法原理。2、使用AdaBoost、梯度提升算法、XGBoost算法创建模型,并且训练评估模型性能。
2023-04-14 10:28:33 1298
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人