![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python
文章平均质量分 91
bryant_meng
究天人之际,通古今之变,成一家之言。
展开
-
【python】OpenCV—Point Polygon Test
注意:对于二维图像(如灰度图像),返回的坐标 (x, y) 是以图像的左上角为原点((0, 0))的坐标系统。用于寻找一维数值数组(例如,灰度图像的某一行或列)中的全局最小值和最大值,以及它们的位置。当 measureDist 为 True 时,返回的距离值是带符号的,正值表示点在多边形内部,负值表示在多边形外部,绝对值表示最短距离。确保传入的轮廓(contour)是正确的,即它应该是一个由点构成的数组,这些点定义了多边形的边界。这可以是一个灰度图像,或者图像的某个部分(如一行或一列)。原创 2024-07-21 23:54:09 · 988 阅读 · 1 评论 -
【python】OpenCV—Open URL Images
需要注意的是,从 Scikit-image 0.18 版本开始,skimage.io 模块中的函数(包括 imread)已经被标记为弃用(deprecated),并在未来的版本中可能会被移除。作为替代,Scikit-image 推荐使用 imageio.imread 函数来读取图像,imageio 是一个独立的库,提供了与 skimage.io 类似的功能,并且更加灵活和强大。imread 函数是其中非常基础且常用的一个函数,它能够从给定的文件路径读取图像,并将其作为 NumPy 数组返回。原创 2024-07-21 14:11:20 · 1087 阅读 · 1 评论 -
【python】OpenCV—Shape Detection
第二个参数是True或False,指定轮廓是否应该被近似为闭合的(通过连接轮廓的第一个点和最后一个点)。如果轮廓不是闭合的,但你不希望它被视为闭合的,应该传递False。需要注意的是,epsilon 的值是一个权衡参数,需要根据具体应用进行调整。这个函数在处理图像中的形状分析、轮廓检测等任务时非常有用。它接受一个轮廓(轮廓是一系列的点,通常通过边缘检测或轮廓查找算法获得)作为输入,并返回该轮廓的周长。contour:输入轮廓,应该是一个点集(通常是numpy.ndarray类型),这些点定义了轮廓的形状。原创 2024-07-20 23:27:08 · 980 阅读 · 0 评论 -
【python】OpenCV—Extreme Points in the Contour
注意到均为黑色背景,从第二小节详细实现来看,也能知道,白色背景效果直接扑街。给一张图片,找出其轮廓,并画出轮廓的上下左右极值点。去掉了腐蚀和膨胀操作,才能分割出来完整的树叶。原创 2024-07-20 22:56:53 · 650 阅读 · 0 评论 -
【python】OpenCV—Scanner
在OpenCV中,特别是在使用cv2.findContours函数时,返回的轮廓信息可能会根据OpenCV的版本(主要是3.x和4.x版本之间)而有所不同。请注意,如果你正在使用OpenCV 3.x,cv2.findContours实际上会返回三个值,但imutils.grab_contours函数会忽略第一个返回值(通常是原始图像,但在这个上下文中并不重要),并只返回轮廓列表。它接受一个轮廓(轮廓是一系列的点,通常通过边缘检测或轮廓查找算法获得)作为输入,并返回该轮廓的周长。显示原始图像和边缘检测图像。原创 2024-07-18 23:33:05 · 824 阅读 · 0 评论 -
【python】OpenCV—Coordinates Sorted Clockwise
调用 opencv 库,绘制轮廓的矩形边框,坐标顺序为右下→左下→左上→右上,我们实现一下转化为熟悉的 左上→右上→右下→左下 形式按照这样的顺序组织边界框坐标是执行透视转换或匹配对象角点(例如计算对象之间的距离)等操作的先决条件。原创 2024-07-18 23:05:44 · 1290 阅读 · 0 评论 -
【python】OpenCV—European Article Number
EAN-13是欧洲物品编码(European Article Number)的缩写,是一种广泛使用的条形码标准,特别是在超级市场和其它零售业中。以下是对EAN-13条形码的详细介绍:一、基本信息名称:EAN-13全称:European Article Number定义:一种用于表示终端产品信息的条形码协议和标准,由13位数字组成。二、编码规则国家代码:前3位数字表示国家代码,由国际商品条码总会授权。在 CN,可用的国家代码为690-699,其中696-699尚未使用。原创 2024-07-14 22:42:43 · 548 阅读 · 0 评论 -
【python】numpy(2)
除了汉宁窗之外,NumPy 还提供了其他几种窗函数,如 numpy.hamming(汉明窗,与汉宁窗类似但稍有不同)、numpy.blackman(布莱克曼窗,提供更低的旁瓣但主瓣更宽)、numpy.bartlett(巴特利特窗)等,每种窗函数都有其特定的应用场景和优缺点。函数返回一个维度为 (M, N) 的 ndarray 数组,其中 M 是数组 a 的第一个维度的大小,N 是数组 b 的第一个维度的大小(假设 a 和 b 都是一维的或可以简化为列向量和行向量)。默认为 False。默认为 False。原创 2024-07-09 12:22:34 · 542 阅读 · 0 评论 -
【python】Class(11.1)
_init__原创 2024-07-09 11:31:13 · 946 阅读 · 0 评论 -
【python】OpenCV—Nighttime Low Illumination Image Enhancement
OpenCV基础(24)改善夜间图像的照明链接:https://pan.baidu.com/s/1cMDB-fDu9CXc0zJ97RT8eA提取码:123a论文:方法描述:基于双通道(bright chennel 和 dark channel)先验的方法对单个图像进行低照度图像增强。原创 2024-07-04 23:58:00 · 982 阅读 · 0 评论 -
【python】Data Augmentation
随机裁剪图片中的长款缩放为 scale 倍的区域,resize 到原图大小,bounding box 的坐标也相应的改变。resized.jpg,粉色区域也被缩放成原图大小,可以看到猫的框裁剪过半,被舍弃了。引入了丢弃机制,裁剪后 bbox 的面积如果小于原来的 50%,该 bbox 丢弃。在目标中进行 mask,随机左上角,h和w固定为设定值——1/2。bbox.jpg,粉色框是随机裁剪的区域,其他框是目标。人和海鸥裁剪均过半,被舍弃,猫和包裁剪未过半,得以保留。c.jpg 对比度增广。原创 2024-07-04 10:01:27 · 309 阅读 · 0 评论 -
【python】OpenCV—Feature Detection and Matching
在计算机图像处理中,特征检测和匹配是两个至关重要的环节,它们在多个领域如SLAM(即时定位与地图构建)、SFM(结构从运动恢复)、AR(增强现实)、VR(虚拟现实)等中发挥着关键作用。以下是对特征检测和匹配的详细解析:一、特征检测定义与意义特征检测是指使用计算机算法从图像中提取出具有独特性质的特征点,这些特征点能够代表图像中的关键信息,并且通常具有旋转、尺度和光照变化的不变性。这些特性使得特征点在图像的不同位置和角度下都能被准确检测。特征点的性质。原创 2024-07-02 23:50:51 · 1143 阅读 · 0 评论 -
【python】OpenCV—QR Code
QR Code(Quick Response Code)是一种二维条码,由日本Denso-Wave公司于1994年发明。QR Code的主要特点是存储信息量大、编码范围广、容错能力强、识读速度快,并且支持全方位识读。这种条码最初是为了在汽车制造行业快速追踪零部件而设计的,但现在已经广泛应用于各种领域,如移动支付、产品防伪、广告宣传、物流追踪等。QR Code的生成和扫描通常需要使用专门的软件或应用,这些软件和应用可以在各种平台上找到,如手机、电脑等。生成 Results.jpg。生成本博客主页的二维码。原创 2024-06-29 13:57:01 · 949 阅读 · 1 评论 -
【python】OpenCV—Aruco
链接:https://pan.baidu.com/s/1bEPuiix0MrtL7Fu3paoRug。链接:https://pan.baidu.com/s/1DmjKL1tVbQX0YkDUzki2Jw。猜出来了 Aruco 的类型,我们就可以设定检测了。依次输出 DICT_5X5_100_42。演示了如何检测图片,下面是检测视频的代码。再看看另外一个的案例。原创 2024-06-29 01:05:30 · 586 阅读 · 0 评论 -
【python】OpenCV—Color Map
import cv2输入输出。原创 2024-06-27 22:50:16 · 1192 阅读 · 0 评论 -
【python】OpenCV—Color Correction
一、cv2.aruco模块概述cv2.aruco 是 OpenCV 库中用于 ArUco 标记检测和识别的模块。ArUco 是一种基于 OpenCV 的二进制标记系统,用于多种计算机视觉应用,如姿态估计、相机校准、机器人导航和增强现实等。以下是关于 cv2.aruco 的中文文档概要,按照参考文章中的信息进行整理和归纳:一、ArUco 标记概述ArUco 标记是带有黑色边框的二进制正方形图像,内部主体为白色,标记根据特定的编码变化。ArUco 标记由 ArUco 字典、标记大小和标记 ID 组成。原创 2024-06-21 21:02:36 · 1765 阅读 · 2 评论 -
【python】OpenCV—Segmentation
cv2.kmeans 用于执行 K-Means 聚类算法,将一组数据点划分到 K 个簇中,使得簇内的数据点尽可能相似,而簇间的数据点尽可能不同。在调用 cv2.kmeans 之前,通常需要将数据转换为 np.float32 类型,并确保数据的形状是 (样本数, 特征数)。None:在原始 API 中,此位置是用于传递之前迭代的标签的,但在大多数情况下,可以设置为 None,因为算法会自动处理。聚类结果可能受初始中心选择的影响,因此设置 attempts 参数为较高的值可能会得到更稳定的结果。原创 2024-06-17 23:57:18 · 1136 阅读 · 0 评论 -
【python】Sklearn—Cluster
参考学习来自。原创 2024-06-15 23:18:53 · 1318 阅读 · 0 评论 -
【python】OpenCV—Background Estimation(15)
学习来自。原创 2024-06-11 23:58:40 · 496 阅读 · 0 评论 -
【Affine / Perspective Transformation】
仿射变换(Affine Transformation),又称仿射映射,是在几何学中描述的一个向量空间进行线性变换后,再附加一个平移变换,从而映射到另一个向量空间的过程。以下是对仿射变换的详细解释:定义:仿射变换是一个向量空间到另一个向量空间的映射,该映射由一个非奇异的线性变换(通过一次函数进行)和一个平移变换组成。在有限维的情况下,每个仿射变换可以由一个矩阵A和一个向量b给出,形式为A和一个附加的列b。原创 2024-06-11 22:29:43 · 961 阅读 · 0 评论 -
【python】OpenCV—Histogram Matching(9.2)
直方图匹配(Histogram Matching)是一种图像处理技术,旨在将一张图像的像素值分布调整到与另一张图像的像素值分布相匹配。这种技术在图像增强、颜色校正等任务中非常有用。以下是关于直方图匹配的详细解释:一、定义与原理直方图匹配又称为直方图规定化,是一种通过调整图像的像素值分布,使两张图像的直方图尽可能相似的图像增强方法。基于直方图变换,通过调整图像的像素值,使得两张图像的直方图在形状和分布上尽可能一致。这通常涉及到将输入图像的像素值映射到输出图像的像素值,以实现两者之间的分布匹配。原创 2024-06-09 23:33:07 · 1629 阅读 · 2 评论 -
【python】OpenCV GUI——Trackbar(14.2)
GUI滑动条是一种直观且快速的调节控件,主要用于改变一个数值或相对值。以下是关于GUI滑动条的详细介绍:一、功能和应用:滑动条可应用于多种调节功能中,如温度、音量、亮度等。它允许用户通过拖动滑块来改变一个数值或相对值,从而实现对某个参数或设置的快速调整。二、类型:滑动条有垂直(JScrollBar.VERTICAL)和水平(JScrollBar.HORIZONTAL)两种类型,分别用于垂直和水平方向的数值调节。三、范围设置:滑动条具有可自定义的最大值和最小值。原创 2024-06-09 20:55:10 · 1455 阅读 · 3 评论 -
【python】OpenCV GUI——Mouse(14.1)
cv2.setMouseCallback 是 OpenCV 库中用于设置鼠标回调函数的方法。它允许开发者在 OpenCV 窗口中进行鼠标交互操作,如鼠标点击、拖动等。以下是关于 cv2.setMouseCallback 的中文文档,包含其用法、参数说明以及使用示例。一、函数用途cv2.setMouseCallback 用于设置鼠标回调函数,以便在 OpenCV 窗口中检测和处理鼠标事件(如左键点击、右键点击等)。二、函数语法参数说明。原创 2024-06-08 22:34:34 · 1286 阅读 · 0 评论 -
【python】OpenCV—Blob Detection(11)
学习来自。原创 2024-06-08 20:22:22 · 1537 阅读 · 0 评论 -
【python】OpenCV—Cartoonify and Portray(16)
参考来自。原创 2024-06-04 23:12:50 · 995 阅读 · 1 评论 -
【python】OpenCV—Statistics(13)
retval:一个四元组,包含四个元素,分别对应图像或数组可能包含的第0、1、2、3通道的元素总和。该函数接受一个单通道图像作为输入,并返回该图像中非零像素的个数。类型:元组(对于彩色图像为 (B, G, R) 或 (B, G, R, A) 对于带有透明度的图像,对于灰度图像为单个浮点数)对于灰度图像,将返回该灰度图像的均值。该函数没有直接的返回值,但计算得到的均值和标准差分别存储在 mean 和 stddev 参数中。src:输入图像或数组。src(必需):输入图像,必须为单通道图像(例如灰度图像)。原创 2024-06-03 23:59:08 · 1063 阅读 · 1 评论 -
【python】OpenCV—Merge Image
Python国庆头像制作渐变透明度叠加原图alpha = max(0, 255 - i // 5 - j // 7) # 核心代码,左上角到右下角越来越透明# 重新填充像素叠加后的效果。原创 2024-05-30 23:51:21 · 841 阅读 · 1 评论 -
【python】OpenCV—Bitplane(12)
具体来说,位平面分割是指将图像的灰度值(通常是一个8位的二进制数)按照每一位(从最低位到最高位)进行拆解,从而得到多个独立的位平面。综上所述,位平面是图像处理中的一个重要概念,它通过将图像的每个像素的二进制表示进行分解,得到一系列的二值图像,这些二值图像就是位平面。每个位平面都包含了图像的不同信息,通过处理这些位平面,我们可以对图像进行各种操作。总之,位平面分割是一种有效的图像处理技术,它通过将图像的灰度值按照每一位进行拆解,得到多个独立的位平面,从而可以对图像进行更精细的分析和处理。原创 2024-05-30 23:08:25 · 1102 阅读 · 0 评论 -
【python】OpenCV—Color Detection
bitwise_and,输出图像像素只有mask对应位置元素不为0的部分才输出,否则该位置像素的所有通道分量都设置为0。H 根据 x 轴取值,S 根据 y 轴取值,V 始终在 (20-255) 之间的范围内取值。转成 hsv 色域,来过滤掉相应的颜色。原创 2024-05-29 23:47:47 · 431 阅读 · 0 评论 -
【python】OpenCV—Tracking(10.2)
借助 BackgroundSubtractor 类,可检测阴影,用阈值排除阴影,从而关注实际特征。做 gif 的时候只设置了播放一次,重复播放需要刷新。Opencv 有三种背景分割器。原创 2024-05-28 23:58:39 · 861 阅读 · 0 评论 -
【python】OpenCV—Paste Mask
学习来自任务描述:提取图片A的 mask 区域,并粘贴到图片B上。原创 2024-04-18 15:49:35 · 685 阅读 · 1 评论 -
【python】OpenCV—Tracking(10.1)
学习来自《Learning OpenCV 3 Computer Vision with Python》Second Edition by Joe Minichino and Joseph Howse。原创 2024-02-01 17:09:43 · 1221 阅读 · 0 评论 -
【python】OpenCV—Data Augmentation(7)
一些常见的数据增广方法,基于 opencv 的实现!原创 2022-10-20 13:54:25 · 602 阅读 · 1 评论 -
【python】OpenCV—Histogram(9.1)
学习参考来自更多学习笔记可以参考。原创 2024-01-09 16:53:07 · 1131 阅读 · 0 评论 -
【python】OpenCV—Rectangle, Circle, Selective Search(1.2)
RCNN 和 Fast RCNN 都用的是 SS,目前被主流的 Faster RCNN 的 Region Proposal Network 替代!pt1 是左上角坐标,pt2 是右下角坐标,坐标可以用电脑自带的画图工具获取,直接 copy 过来就行!的参数为等待键盘触发的时间,单位为 ms,返回值为 -1(表示没有键被按下)或者 ASCII 码。补充2:如果要把区域裁剪出来,可以借助 numpy 的切片操作,例如。一起画,哈哈哈,我也是周伯通了,左手画圆,右手画框!参数设置为 -1 即可。原创 2023-11-16 17:09:19 · 701 阅读 · 0 评论 -
【python】time
gmtime 和 strftime。今天星期几,对应英文。原创 2023-10-11 23:41:56 · 246 阅读 · 0 评论 -
【python】Leetcode(primer-set)
思路:和 78 唯一不同的是 nums 可能包含一样的元素,这个时候就会存在 [1,2] 和 [2,1] 或者更难一点的 [1,2,2] 和 [2,1,2] 的情况,78 的解法这两个都会保留(78中元素不一样),但是这题只能保留其中一种!给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。算 2 的子集的时候,2 结合 1 的所有子集;算 3 的子集的时候,3 结合 2 的所有子集。原创 2023-08-24 15:11:19 · 569 阅读 · 0 评论 -
【python】Leetcode(primer-binary)
链接:https://leetcode-cn.com/problems/single-number/solution/zhi-chu-xian-yi-ci-de-shu-zi-by-leetcode-solution/思路:利用异或运算的性质,自己和自己异或结果为 0, 和 0 异或结果为本身。两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。还有一种比较快的方法是直接计算异或(相同为1,不同为0)注意: 输入范围是 [-1e7, 1e7]。输入: [4,1,2,1,2]原创 2023-08-24 15:08:19 · 306 阅读 · 0 评论 -
【python】Leetcode(primer-pointer)
我们可以这样想,我们首先判断首尾两项的和是不是 target,如果比 target 小,那么我们左边+1位置的数(比左边位置的数大)再和右相相加,继续判断。如果比 target 大,那么我们右边-1位置的数(比右边位置的数小)再和左相相加,继续判断。(这和快速排序的思路很相似)思路:题目中不能用别的数组来存排序后的结果,方法是采用两个指针,倒序遍历两个数组,比较大小,把较大的数字从后面依次放在数组1中,最后把数组2剩下的数字全部复制到数组1中!返回的下标值(index1 和 index2)不是从零开始的。原创 2023-08-24 14:58:56 · 263 阅读 · 0 评论 -
【python】Leetcode(primer-dict-list)
给你一个整数数组 nums 和一个整数 k ,请你返回数对 (i, j) 的数目,满足 i < j 且 |nums[i] - nums[j]| == k。那样,出现第二次的时候删掉字典键值对,所以我们中规中矩,把数字和频数存在字典中,然后,遍历字典,输出频数为 1 的数。思路1:用字典,key 是数字,value 是频数,出现了两次,就删掉,最后输出字典中有的元素。的思路,存在字典中,keys 是数字,values 是频数,然后根据频数筛选出最终答案!你可以假设数组是非空的,并且给定的数组总是存在众数。原创 2023-08-24 14:49:44 · 1407 阅读 · 0 评论