
Python
文章平均质量分 79
越努力越幸运@
研究生
展开
-
组织列表-python
在你创建的列表中,元素的排列顺序常常是无法预测的,因为你并非总能控制用户提供数据的顺序。这虽然在大多数情况下都是不可避免的,但你经常需要以特定的顺序呈现信息。有时候,你希望保留列表元素最初的排列顺序,而有时候又需要调整排列顺序。Python提供了很多组织列表的方式,可根据具体情况选用。原创 2023-06-11 14:29:19 · 748 阅读 · 0 评论 -
修改、添加和删除列表元素
为此,可在开始时将一些外 星人存储在列表中,然后每当有外星人被射杀时,都将其从列表中删除,而每次有新的外星人出现在屏幕上时,都将其添加到列表中。如果你不确定该使用del 语句还是pop() 方法,下面是一个简单的判断标准:如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用del 语句;为控制用户,可首先创建一个空列表,用于存储用户将要输入的值,然后将 用户提供的每个新值附加到列表中。修改列表元素的语法与访问列表元素的语法类似。要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值。.原创 2022-08-08 10:19:17 · 1259 阅读 · 0 评论 -
列表是什么以及如何使用列表元素
本文中你将学习列表是什么以及如何使用列表元素。列表让你能够在一个地方存储成组的信息,其中可以只包含几个元素,也可以包含数百万个元素。列表是新手可直接使用的最强大的Python功能之一,它融合了众多重要的编程概念。列表是什么列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有 任何关系。......原创 2022-08-04 21:35:07 · 1538 阅读 · 0 评论 -
如何在编写程序语言中编写注释-python
当前,大多数软件都是合作编写的,编写者可能是同一家公司的多名员工,也可能是众多致力于同一个开源 项目的人员。作为新手,最值得养成的习惯之一是,在代码中编写清晰、简洁的 注释。当然,你总是 可以通过研究代码来确定各个部分的工作原理,但通过编写注释,以清晰的自然语言对解决方案进行概述,可节省很多时间。如果答案是肯定的,就编写注释对你的解决方案进行说明吧。本文前面编写的程序中都只包含Python代码,但随着程序越来越大、越来越复杂,就应在其中添加说明,对你解决问题的方法 进行大致的阐述。当然双引号也是可以的。..原创 2022-08-03 21:04:55 · 1571 阅读 · 0 评论 -
使用修补技术去除老照片中小的噪音和划痕
它要选取待修补像素周围的一个小的邻域,使用这个邻域内的归一化加权和更新待修复的像素值。对于靠近带修复点的像素点,靠近正常边界像素点和在轮廓上的像素点给予更高的权重。当一个像素被修复之后,使用快速行进算法(FMM)移动到下一个最近的像素。它首先沿着正常区域的边界向退化区域的前进(因为边界是连续的,所以退化区域非边界与正常区域的边界应该也是连续的)。我们要创建一个与输入图像大小相等的掩模图像,将待修复区域的像素设置为255(其他地方为0)。第三幅是使用第一个算法的结果,最后一副是使用第二个算法的结果。.....原创 2022-07-26 07:33:01 · 881 阅读 · 0 评论 -
学习 K 值聚类的概念以及它是如何工作的
肯定不能把每个大小的T恤都生产出来,所以他们把所有的人分为三组小,中,大,这三组要覆盖所有的人。我们可以使用K值聚类的方法将所有人分为3组,这个算法可以找到一个最好的分法,并能覆盖所有人。计算每个点到这两个重心点的距离,如果距离C1比较近就标记为0,如果距离C2比较近就标记为1。(如果有更多的重心点,可以标记为“2”,“3”等)重新计算所有蓝色点的重心,和所有红色点的重心,并以这两个点更新重心点的位置。在我们的例子中我们把属于0的标记为红色,属于1的标记为蓝色。...原创 2022-07-24 08:33:55 · 1388 阅读 · 0 评论 -
Shi-Tomasi 角点检测 & 适合于跟踪的图像特征
Shi-Tomasi 角点检测 & 适合于跟踪的图像特征目标 本节我们将要学习: • 另外一个角点检测技术:Shi-Tomasi 焦点检测 • 函数:cv2.goodFeatureToTrack()原理 上一节我们学习了 Harris 角点检测,后来 1994 年,J.Shi 和 C.Tomasi在他们的文章《Good_Features_to_Track》中对这个算法做了一个小小的修改,并得到了更好的结果。我们知道 Harris 角点检测的打分公式为: 但 Shi-Tomasi 使原创 2022-07-06 23:20:00 · 370 阅读 · 0 评论 -
图像特征提取与描述- Harris 角点检测
Harris 角点检测目标 • 理解 Harris 角点检测的概念 • 学习函数:cv2.cornerHarris(),cv2.cornerSubPix() 原理 在上一节我们已经知道了角点的一个特性:向任何方向移动变化都很大。Chris_Harris 和 Mike_Stephens 早在 1988 年的文章《A Combined Corner and Edge Detector》中就已经提出了焦点检测的方法,被称为Harris 角点检测。他把这个简单的想法转换成了数学形式。将窗口向各个原创 2022-07-06 23:08:46 · 403 阅读 · 0 评论 -
OpenCV-使用 GrabCut 算法进行交互式前景提取
使用 GrabCut 算法进行交互式前景提取目标 在本节中我们将要学习: • GrabCut 算法原理,使用 GrabCut 算法提取图像的前景 • 创建一个交互是程序完成前景提取 原理 算法是由微软剑桥研究院的 Carsten_Rother,Vladimir_Kolmogorov和 Andrew_Blake 在文章《GrabCut”: interactive foreground extraction using iterated graph cuts》中共同提出的。此算法在提取前原创 2022-07-05 22:05:39 · 594 阅读 · 0 评论 -
opencv-分水岭算法图像分割
分水岭算法图像分割目标 本节我们将要学习 • 使用分水岭算法基于掩模的图像分割 • 函数:cv2.watershed() 原理 任何一副灰度图像都可以被看成拓扑平面,灰度值高的区域可以被看成是山峰,灰度值低的区域可以被看成是山谷。我们向每一个山谷中灌不同颜色的水。随着水的位的升高,不同山谷的水就会相遇汇合,为了防止不同山谷的水汇合,我们需要在水汇合的地方构建起堤坝。不停的灌水,不停的构建堤坝知道所有的山峰都被水淹没。我们构建好的堤坝就是对图像的分割。这就是分水岭算法的背后哲理。你可以通原创 2022-07-04 23:07:14 · 710 阅读 · 0 评论 -
OpenCV-Hough 圆环变换
Hough 圆环变换目标 • 学习使用霍夫变换在图像中找圆形(环)。 • 学习函数:cv2.HoughCircles()。 原理 圆形的数学表达式为 (x-xcenter)2{{(x-{x}_{center})}^{2}}(x-xcenter)2+(y-ycenter)2{{(y-{y}_{center})}^{2}}(y-ycenter)2 = r2{{r}^{2}}r2,其中(xcenter{{x}_{center}}xcenter,ycenter{{y}_{center}}ycen原创 2022-07-04 22:54:21 · 282 阅读 · 0 评论 -
OpenCV-Hough 直线变换
Hough 直线变换目标 • 理解霍夫变换的概念 • 学习如何在一张图片中检测直线 • 学习函数:cv2.HoughLines(),cv2.HoughLinesP() 原理 霍夫变换在检测各种形状的的技术中非常流行,如果你要检测的形状可以用数学表达式写出,你就可以是使用霍夫变换检测它。及时要检测的形状存在一点破坏或者扭曲也可以使用。我们下面就看看如何使用霍夫变换检测直线。 一条直线可以用数学表达式 y = mx + c 或者 ρ = x cos θ + y sin θ 表示。ρ原创 2022-07-02 22:29:51 · 383 阅读 · 0 评论 -
2D 直方图
2D 直方图目标 本节我们会学习如何绘制 2D 直方图,我们会在下一节中使用到它。介绍 在前面的部分我们介绍了如何绘制一维直方图,之所以称为一维,是因为我们只考虑了图像的一个特征:灰度值。但是在 2D 直方图中我们就要考虑两个图像特征。对于彩色图像的直方图通常情况下我们需要考虑每个的颜色(Hue)和饱和度(Saturation)。根据这两个特征绘制 2D 直方图。 OpenCV 的官方文档中包含一个创建彩色直方图的例子。本节就是要和大家一起来学习如何绘制颜色直方图,这会对我们下一节学习直方图投影原创 2022-06-30 21:52:46 · 1040 阅读 · 0 评论 -
直方图均衡化
直方图均衡化目标 • 本小节我们要学习直方图均衡化的概念,以及如何使用它来改善图片的对比。 原理 想象一下如果一副图像中的大多是像素点的像素值都集中在一个像素值范围之内会怎样呢?例如,如果一幅图片整体很亮,那所有的像素值应该都会很高。但是一副高质量的图像的像素值分布应该很广泛。所以你应该把它的直方图做一个横向拉伸(如下图),这就是直方图均衡化要做的事情。通常情况下这种操作会改善图像的对比度。 推荐你去读读维基百科中关于直方图均衡化的条目。其中的解释非常给力,读完之后相信你就会对整个过程有一原创 2022-06-30 19:14:13 · 1051 阅读 · 0 评论 -
直方图的计算,绘制与分析
直方图的计算,绘制与分析目标 • 使用 OpenCV 或 Numpy 函数计算直方图 • 使用 Opencv 或者 Matplotlib 函数绘制直方图 • 将要学习的函数有:cv2.calcHist(),np.histogram() 原理 什么是直方图呢?通过直方图你可以对整幅图像的灰度分布有一个整体的了解。直方图的 x 轴是灰度值(0 到 255),y 轴是图片中具有同一个灰度值的点的数目。 直方图其实就是对图像的另一种解释。一下图为例,通过直方图我们可以对图像的对比度,亮度,灰原创 2022-06-29 22:48:07 · 2382 阅读 · 0 评论 -
OpenCV 中的轮廓-轮廓的层次结构
这样我们就可以确定一个轮廓与其他轮廓是怎样连接的,比如它是不是某个轮廓的子轮廓,或者是父轮廓。而对象内部中空洞的轮廓为第2级组织结构,空洞中的任何对象的轮廓又是第1级组织结构。所以数组是[2,-1,-1,0]。与前面一样,轮廓1的Previous为轮廓0,轮廓2的Previous为轮廓1。子为4,没有父轮廓,所以数组是[5,0,4,-1]没有子,父轮廓为0,所以数组是[-1,1,-1,0]没有Previous,没有子,父轮廓为3,所以数组是[-1,-1,-1,3]...原创 2022-06-29 12:13:36 · 1250 阅读 · 0 评论 -
OpenCV 中的轮廓-轮廓:更多函数
轮廓:更多函数目标 我们要学习• 凸缺陷,以及如何找凸缺陷• 找某一点到一个多边形的最短距离• 不同形状的匹配原理与代码凸缺陷 前面我们已经学习了轮廓的凸包,对象上的任何凹陷都被成为凸缺陷。 OpenCV 中有一个函数 cv.convexityDefect() 可以帮助我们找到凸缺陷。函数调用如下:它会返回一个数组,其中每一行包含的值是 [起点,终点,最远的点,到最远点的近似距离]。我们可以在一张图上显示它。我们将起点和终点用一条绿线连接,在最远点画一个圆圈,要记住的是返回结果的前三原创 2022-06-28 23:10:27 · 225 阅读 · 0 评论 -
OpenCV 中的轮廓-轮廓的性质
轮廓的性质 本小节我们将要学习提取一些经常使用的对象特征。你可以在Matlab regionprops documentation 更多的图像特征。 长宽比 边界矩形的宽高比 Extent轮廓面积与边界矩形面积的比。Solidity轮廓面积与凸包面积的比。Equivalent Diameter与轮廓面积相等的圆形的直径方向对象的方向,下面的方法还会返回长轴和短轴的长度掩模和像素点有时我们需要构成对象的所有像素点,我们可以这样做:这里我们是用来两种方法,第一种方法使用原创 2022-06-28 22:57:38 · 479 阅读 · 0 评论 -
图像金字塔-OpenCV
20 图像金字塔目标20.1 原理 一般情况下,我们要处理是一副具有固定分辨率的图像。但是有些情况下,我们需要对同一图像的不同分辨率的子图像进行处理。比如,我们要在一幅图像中查找某个目标,比如脸,我们不知道目标在图像中的尺寸大小。这种情况下,我们需要创建创建一组图像,这些图像是具有不同分辨率的原始图像。我们把这组图像叫做图像金字塔(简单来说就是同一图像的不同分辨率的子图集合)。如果我们把最大的图像放在底部,最小的放在顶部,看起来像一座金字塔,故而得名图像金字塔。 有两类图像金字塔:高斯金字塔和拉普原创 2022-06-25 18:07:58 · 249 阅读 · 0 评论 -
合并(拼接)字符串-python
合并(拼接)字符串在很多情况下,都需要合并字符串。例如,你可能想将姓和名存储在不同的变量中,等要显示姓名时再将它们合而为一:Python使用加号(+ )来合并字符串。在这个示例中,我们使用+ 来合并first_name 、空格和last_name ,以得到完整的姓名(见❶),其结果如下:ada lovelace这种合并字符串的方法称为拼接 。通过拼接,可使用存储在变量中的信息来创建完整的消息。下面来看一个例子:在这里,一个问候用户的句子中使用了全名(见❶),并使用了方法title() 来将姓名设置为原创 2022-06-18 09:15:33 · 3270 阅读 · 0 评论 -
字符串-python
字符串大多数程序都定义并收集某种数据,然后使用它们来做些有意义的事情。鉴于此,对数据进行分类大有裨益。我们将介绍的第一种数据类型是字符串。字符串虽然看似简单,但 能够以很多不同的方式使用它们。字符串 就是一系列字符。在Python中,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号,如下所示:这种灵活性让你能够在字符串中包含引号和撇号:下面来看一些使用字符串的方式。使用方法修改字符串的大小写对于字符串,可执行的最简单的操作之一是修改其中的单词的大小写。请看下面的代码,并尝试判断其作用原创 2022-06-18 07:03:57 · 110 阅读 · 0 评论 -
吴恩达视频-第一门课第2周2.18节- (选修)logistic 损失函数的解释
2.17略2.18 (选修)logistic 损失函数的解释(Explanation of logisticregression cost function) 在前面的视频中,我们已经分析了逻辑回归的损失函数表达式,在这节选修视频中,我将给出一个简洁的证明来说明逻辑回归的损失函数为什么是这种形式。 回想一下,在逻辑回归中,需要预测的结果y^\hat{y}y^,可以表示为y^\hat{y}y^= 𝜎(wTx+b{{w}^{T}}x+bwTx+b),𝜎是我们熟悉的𝑆型函数 𝜎(𝑧) ...原创 2022-06-15 19:26:15 · 126 阅读 · 0 评论 -
Python编程:从入门到实践-变量和简单数据类型
变量和简单数据类型 在本章中,你将学习可在Python程序中使用的各种数据,还将学习如何将数据存储到变量中,以及如何在程序中使用这些变量。运行运 hello_world.py时发生的情况 运行hello_world.py时,Python都做了些什么呢?下面来深入研究一下。实际上,即便是运行简单的程序,Python所做的工作也相当多: hello_world.py运行上述代码时,你将看到如下输出:运行文件hello_world.py时,末尾的.py指出这是一个Python程序,因此编辑器将使用原创 2022-06-14 19:32:03 · 150 阅读 · 0 评论 -
吴恩达视频-第一门课第2周2.16节-关于 python _ numpy 向量的说明(A note on python or numpy vectors)
本节主要讲 Python 中的 numpy 一维数组的特性,以及与行向量或列向量的区别。并介绍了老师在实际应用中的一些小技巧,去避免在 coding 中由于这些特性而导致的 bug。 Python 的特性允许你使用广播(broadcasting)功能,这是 Python 的 numpy 程序语言库中最灵活的地方。而我认为这是程序语言的优点,也是缺点。优点的原因在于它们创造出语言的表达性,Python 语言巨大的灵活性使得你仅仅通过一行代码就能做很多事情。但是这也是缺点,由于广播巨大的灵活性,有时候你对于原创 2022-06-14 16:05:24 · 143 阅读 · 0 评论 -
吴恩达视频-第一门课第2周2.14节-向量化 logistic 回归的梯度输出(Vectorizing Logistic Regression‘s Gradient)
**第 1 章 起步 **在本章中,你将运行自己的第一个程序 ——hello_world.py。为此,你首先需要检查自己的计算机是否安装了 Python ;如果没有安装,你需要安装它。 你还要安装一个文 本编辑器,用于编写和运行 Python 程序。你输入 Python 代码时,这个文本编辑器能够识别它们并突出显示不同的部分,让你能够轻松地了解代码的结构。**1.1 搭建编程环境 **在不同的操作系统中,Python 存在细微的差别,因此有几点你需要牢记在心。这里将介绍大家使用的两个主要的 Pytho原创 2022-05-16 14:23:14 · 336 阅读 · 0 评论 -
吴恩达视频-第一门课第2周2.13节-向量化逻辑回归(Vectorizing Logistic Regression)
向量化逻辑回归(Vectorizing Logistic Regression) 我们已经讨论过向量化是如何显著加速你的代码,在本次视频中我们将讨论如何实现逻辑回归的向量化计算。这样就能处理整个数据集,甚至不会用一个明确的 for 循环就能实现对于整个数据集梯度下降算法的优化。我对这项技术感到非常激动,并且当我们后面谈到神经网络时同样也不会用到一个明确的 for 循环。 让我们开始吧,首先我们回顾一下逻辑回归的前向传播步骤。所以,如果你有 𝑚 个训练样本,然后对第一个样本进行预测,你需要这样计算。计原创 2022-05-14 17:02:58 · 528 阅读 · 0 评论