
OpenCV
文章平均质量分 83
OpenCV图像处理,Python语言版本的教程,主要运行和完善了官网代码,以及翻译了部分资料
老周有AI~算法定制
输出回馈输入;
有算法定制的可以找我 +v znzatop
展开
-
【Python-OpenCV】手势控制贪吃蛇
手势控制贪吃蛇游戏是一个有趣的项目,它展示了如何将计算机视觉技术与传统游戏相结合,创造出新的交互方式。这个项目不仅是一个有趣的游戏,也是学习计算机视觉、游戏开发和人机交互的好例子。希望这个项目能给你带来灵感,激发你对技术和创新的热情。欢迎尝试、改进和分享这个项目!如果你喜欢这个项目,别忘了给它点个星!原创 2025-03-21 20:20:42 · 2119 阅读 · 2 评论 -
【python-opencv-mediapipe】眼睛杀死315黑心商家
在这篇博客中,我将分享如何使用Python、MediaPipe和Pygame开发一款基于眼动追踪的激光射击游戏。这个项目不仅仅是一个有趣的游戏,更是一次探索计算机视觉、人机交互和游戏开发的旅程。原创 2025-03-20 21:46:52 · 586 阅读 · 0 评论 -
【π日庆祝】python mediapipe
AR π纹身是一个创新的增强现实应用,它能够实时检测用户的面部,并在用户额头上投影虚拟的π符号纹身。不仅如此,用户还可以通过特定的手势来触发各种炫酷的动画效果,如当用户做出心形手势时,π符号会以优雅的动画方式出现;当用户张开嘴巴时,π的数字(3.14159…)会从嘴中"飞"出来,创造出令人惊叹的视觉效果。“AR π纹身不仅是一个技术演示,更是一种将抽象数学概念可视化的创新尝试,让π不再只是一个数字,而是一种可以互动的体验。” —— 项目创始人🔗GitHub仓库。原创 2025-03-14 20:59:54 · 931 阅读 · 0 评论 -
扫描线效果:创建令人惊叹的视频过渡效果
扫描线效果生成器是一个简单但功能强大的工具,它可以帮助你创建引人入胜的视觉效果。无论你是视频创作者、教育工作者,还是对视觉效果感兴趣的爱好者,都可以尝试使用它来增强你的创作。项目采用AGPL-3.0开源协议,你可以自由使用、修改和分享。希望这个工具能为你的创作带来灵感和便利!如果你觉得这个项目有用,请在GitHub上给我们一个星标,这对我们意味着很多!原创 2025-03-12 17:53:25 · 763 阅读 · 0 评论 -
【基于手势识别的音量控制系统】
系统运行时,用户可以通过自然的手势来控制系统音量,无需接触任何物理设备。同时,实时的视觉反馈让用户能够精确地控制音量大小。人脸遮罩功能在保护用户隐私的同时,不会影响系统的正常使用。这是一个结合了计算机视觉和系统控制的实用项目,通过识别手势来实现音量的无接触控制,同时考虑到了用户隐私,加入了实时人脸遮罩功能。原创 2025-03-05 21:55:27 · 714 阅读 · 0 评论 -
【基于手势识别的虚拟拖拽系统】
这是一个基于计算机视觉的虚拟拖拽系统,通过 MediaPipe 手势识别技术,实现了对虚拟图形的直观操控。用户可以通过自然的手势来拖拽、缩放和旋转屏幕上的虚拟图形,就像在现实世界中操作物体一样。原创 2025-03-05 21:45:38 · 303 阅读 · 0 评论 -
【OpenCV-Python】cvui 之 trackbar
渲染一个 trackbar, 可以左右拖动或点击对数字进行增加或减少的调整。原创 2023-04-09 08:15:00 · 637 阅读 · 0 评论 -
【OpenCV-Python】cvui 之 计数器
为一个整型或者double值渲染一个计数器,可以点击向上或向下增加或减少值。原创 2023-04-08 08:15:00 · 357 阅读 · 0 评论 -
【OpenCV-Python】cvui 之 文本
渲染文本到图像上;原创 2023-04-07 10:12:51 · 563 阅读 · 0 评论 -
【OpenCV-Python】cvui 之 格式化文本打印
格式化输出文本。原创 2023-04-07 10:32:59 · 515 阅读 · 0 评论 -
【OpenCV-Python】cvui 之 复选框
可以使用状态变量获得 checkbox 是否点击;theState: 状态值,默认为 False,theFontScale: 字体大小。theColor: 颜色值,theWhere: 画布。theLabel: 标签。theX: 画布横坐标。theY: 画布纵坐标。原创 2023-04-06 16:53:36 · 872 阅读 · 0 评论 -
【OpenCV-Python】cvui 之 图像
theWhere: 画布。theImage: 图像。theX: 画布横坐标。theY: 画布纵坐标。原创 2023-04-06 16:24:29 · 871 阅读 · 0 评论 -
【OpenCV-Python】cvui 之 按钮
可以将图像当做一个按钮,这个按钮接受3种状态:空(无鼠标交互)、滑过(鼠标滑过按钮)、按下(鼠标点击);button 的宽度根据 label 自适应。: button 需要渲染到哪一个图像上;原创 2023-04-06 16:07:47 · 2343 阅读 · 0 评论 -
【OpenCV-Python】cvui: 简介
cvui 是一个非常简单的 UI 库,构建在 OpenCV 画图基本原型接口上。其他 UI 库,如imgui, 需要 OpenGL 才能工作。cvui 则不需要。原创 2023-04-06 15:28:11 · 1865 阅读 · 0 评论 -
【Python】list 列表中递归插入数据
【代码】【Python】list 列表中递归插入数据。原创 2023-03-28 15:50:15 · 349 阅读 · 0 评论 -
【OpenCV-Python】教程:汇总
github 仓库地址gitee 仓库地址【OpenCV-Python】教程:1-1 图像读取显示保存_黄金旺铺的博客-优快云博客【OpenCV-Python】教程:1-2 视频读取显示保存_黄金旺铺的博客-优快云博客_cap_prop_orientation_meta【OpenCV-Python】教程:1-3 画图_黄金旺铺的博客-优快云博客【OpenCV-Python】教程:1-4 鼠标交互事件_黄金旺铺的博客-优快云博客_python opencv 鼠标事件【OpenCV-Python】教程:原创 2022-12-30 11:55:21 · 825 阅读 · 0 评论 -
【OpenCV-Python】教程:3-4 平滑去噪,高斯平滑,均值滤波,中值滤波
和一维信号一样,图像也可以通过低通滤波器和高通滤波器进行滤波;低通滤波器可以模糊图像和去除噪声,高通滤波器可以用于找图像边缘。原创 2022-11-19 12:58:26 · 2432 阅读 · 0 评论 -
【OpenCV-Python】教程:10-1 OpenCV Python绑定
为此,在这些声明的开头添加了某些宏,使头解析器能够识别要解析的函数。例如,一个函数将被解析以得到一个包含函数名、返回类型、输入参数、参数类型等的列表。其次,如果一个已经存在的数据类型可以映射到您的类,那么最好使用cv_wrap_mapable并将源类型作为参数来指示这种容量,而不是创建自己的绑定函数。我们的生成器脚本(gen2.py)将为头文件解析器解析的所有函数/类/枚举/结构创建包装器函数(你可以在编译时在。以下面的积分函数为例。接口中不存在的附加特性,例如额外的方法、类型映射或提供默认参数。原创 2022-12-29 07:30:00 · 587 阅读 · 0 评论 -
【OpenCV-Python】教程:9-2 级联分类器训练
使用增强的弱分类器级联包括两个主要阶段:阶段。使用基于或模型的检测,在中进行了描述。本文档概述了训练您自己的增强弱分类器级联所需的功能。当前的手册将走过所有不同的阶段:,和。为了支持本教程,将使用几个官方OpenCV应用程序:,,and.自OpenCV 4.0起,createsample和traincascade被禁用。考虑使用这些应用程序从3.4分支训练级联分类器。模型格式在3.4和4.x之间是相同的。原创 2022-12-28 07:30:00 · 1261 阅读 · 0 评论 -
【OpenCV-Python】教程:9-1 级联分类器
我们选择错误率最小的特征,这意味着它们是最准确地分类人脸和非人脸图像的特征。现在,每个内核的所有可能的大小和位置都被用来计算大量的特征。无论您的图像有多大,它都将给定像素的计算减少到只涉及四个像素的操作。最初,该算法需要大量的正面图像(人脸图像)和负面图像(没有人脸的图像)来训练分类器。每个特征都是一个单独的值,由黑色矩形下的像素和减去白色矩形下的像素和得到。基于Haar特征的级联分类器的目标检测是Paul Viola和Michael Jones在2001年的论文中提出的一种有效的目标检测方法。原创 2022-12-28 07:15:00 · 910 阅读 · 0 评论 -
【OpenCV-Python】教程:8-3 高动态范围 HDR
高动态范围成像(HDRI或HDR)是一种用于成像和摄影的技术,用于再现比标准数字成像或摄影技术更大的动态范围的光度。当我们拍摄真实世界的场景时,明亮的区域可能曝光过度,而黑暗的区域可能曝光不足,所以我们不能用一次曝光来捕捉所有的细节。在本教程中,我们展示了2种算法(Debevec, Robertson)从曝光序列生成和显示HDR图像,并演示了一种称为曝光融合的替代方法(Mertens),该方法产生低动态范围图像,不需要曝光时间数据。获取HDR图像有不同的方法,但最常见的是使用不同曝光值拍摄的场景照片。原创 2022-12-26 15:06:51 · 1106 阅读 · 3 评论 -
【OpenCV-Python】教程:8-2 图像修复 Image Inpainting
它在修补区域边界处匹配梯度向量的同时,继续等距(相同强度的线连接点,就像等高线连接点一样)。为此,使用了流体动力学中的一些方法。第一种算法是基于Alexandru Telea在2004年发表的论文**“一种基于快速行进方法的图像修补技术”**。算法从该区域的边界开始,在区域内部逐步填充边界内的所有东西。它需要一个小的邻域,围绕邻域上的像素进行内绘。对靠近点的像素、靠近边界法线的像素和位于边界轮廓上的像素给予更多的权重。基本的想法很简单:用邻近的像素替换那些不好的标记,这样它看起来就像邻近的像素。原创 2022-12-26 14:00:50 · 2142 阅读 · 0 评论 -
【OpenCV-Python】教程:8-1 图像去噪 Image Denoising
第二个参数imgToDenoiseIndex指定我们需要去噪的帧,为此我们将帧的索引传递到输入列表中。在这种情况下,总共使用了temporalWindowSize帧,其中中心帧是要去噪的帧。所以我们取一个像素,在它周围取一个小窗口,在图像中搜索相似的窗口,平均所有的窗口,然后用我们得到的结果替换像素。与我们之前看到的模糊技术相比,它需要更多的时间,但它的结果非常好。在这些技术中,我们在像素周围取一个小的邻域,并进行一些操作,如高斯加权平均,值的中值等来替换中心元素。简而言之,一个像素的噪声去除是局部的。原创 2022-12-26 13:06:02 · 2506 阅读 · 0 评论 -
【OpenCV-Python】教程:7-7 PCA
例如,在上述情况下,可以将点集近似为一条线,因此,将给定点的维数从2D降至1D。每个特征向量的大小被编码在相应的特征值中,并表示数据沿主成分的变化程度。此外,您还可以看到,这些点沿蓝线变化最大,超过它们沿特征1或特征2轴的变化。这意味着,如果你知道一个点沿蓝线的位置,你就比只知道它在特征1轴或特征2轴上的位置有更多关于这个点的信息。事实上,在图中的点集上运行主成分分析的结果由两个被称为特征向量的向量组成,它们是数据集的主成分。均值减法是寻找主成分基的解决方案的一个组成部分,使接近数据的均方误差最小化。原创 2022-12-25 21:58:33 · 1257 阅读 · 0 评论 -
【OpenCV-Python】教程:7-5 理解SVM...
【代码】【OpenCV-Python】教程:7-5 理解SVM...原创 2022-12-24 15:51:27 · 145 阅读 · 0 评论 -
【OpenCV-Python】教程:7-6 SVM识别手写字符
训练模型,由于SVM有很多参数,并且需要寻找最好的参数,可以使用。在kNN中,直接用的是像素亮度值,这次,我们将使用。(HOG) 作为特征向量。自动训练使用最好的参数。创建一个空的模型原创 2022-12-24 15:25:10 · 996 阅读 · 0 评论 -
【OpenCV-Python】教程:7-5 理解SVM
因此,仅仅找到具有最大Margin的决策边界是不够的。无论如何,我们需要修改我们的模型,使其能够找到最大边际的决策边界,但错误分类较少。在kNN中,对于一个测试数据,我们用来测量它与所有训练样本的距离,并取距离最小的一个。测量所有的距离需要大量的时间,存储所有的训练样本需要大量的内存。这意味着,三维空间中的点积可以用二维空间中的平方点积来实现。对于那些没有被错误分类的,它们落在相应的支撑平面上,所以它们的距离为零。简而言之,低维空间中的非线性可分数据在高维空间中变为线性可分的可能性更大。原创 2022-12-24 14:52:45 · 658 阅读 · 0 评论 -
【OpenCV-Python】教程:7-4 KMeans 应用
函数kmeans实现了一个k-means算法,该算法查找cluster_count聚类的中心,并围绕聚类对输入样本进行分组。查找聚类中心,并围绕聚类分组输入样本。行中的样本的基于0的聚类索引。包含存储在样本矩阵第。原创 2022-12-23 23:42:23 · 380 阅读 · 0 评论 -
【OpenCV-Python】教程:7-3 理解KMeans
如果没有,公司可以把人们分成更多的小组,可能是五组,以此类推。有个公司,打算投放一批T-shirt到市场上售卖,但是不知道人们需要什么样的尺寸,而且工厂也不会制作所有的尺寸样衣,所以,他们需要想办法,用尽可能少的尺寸数量满足用户需求。迭代进行以上步骤后,直到两个质心都收敛到固定点(或者收敛到我们设定的值,例如最大迭代次数,达到的精度等)。这只是对KMeans的直观理解,若要理解更多的细节,请看专业的机器学习书籍。分别计算所有红色点和蓝色点的平均值,新的平均值就是新的质心,也是新的。原创 2022-12-22 23:12:29 · 202 阅读 · 0 评论 -
【OpenCV-Python】教程:7-2 kNN识别手写字符
【代码】【OpenCV-Python】教程:7-2 kNN识别手写字符。原创 2022-12-22 22:24:27 · 248 阅读 · 0 评论 -
【OpenCV-Python】教程:7-1 理解 kNN (k-Nearest Neighbour)
在我们的图像中,让我们取k=3,即考虑3个最近的邻居。新成员有两个红色邻居和一个蓝色邻居(有两个蓝色邻居等距,但由于k=3,我们只能取其中一个),所以他应该再次加入红色家族。我们会看到我们的新成员有2个红色和2个蓝色邻居作为他的四个最近的邻居,我们需要选择一种打破平局的方法来进行分类。同样,在kNN中,我们确实考虑了k个邻居,但我们对所有邻居都给予了同等的重视,对吧?我们根据每个邻居与新来的人的距离给他们一些权重:离他近的人得到更高的权重,而离他远的人得到更低的权重。一个简单的方法是看看谁是他最近的邻居。原创 2022-12-18 21:44:07 · 815 阅读 · 0 评论 -
【OpenCV-Python】教程:6-4 Depth Map from Stereo Images 立体图像的深度图
是相机的焦距(已经知道)。所以简而言之,上面的方程说的是,场景中一个点的深度与对应图像点与其相机中心的距离之差成反比。因此,有了这些信息,我们可以推导出图像中所有像素的深度。上一节中,我们学习了一些基本概念,如对极约束和其他一些相关术语。我们还可以看到,如果我们有同一个场景的两张图像,我们可以以一种直观的方式获得深度信息。所以它会在两张图像之间找到对应的匹配。为图像平面中与场景点3D对应的点与其相机中心之间的距离。上图包含等价三角形。是两个相机之间的距离(我们知道),创建 StereoSGBM 对象。原创 2022-12-17 22:16:34 · 837 阅读 · 0 评论 -
【OpenCV-Python】教程:6-3 Epipolar Geometry 对极几何
基本矩阵除了包含与本质矩阵相同的信息外,还包含了两个相机的内在信息,因此我们可以将两个相机在像素坐标上联系起来。它应该在这条线上的某个地方(这样想,要在其他图像中找到匹配点,你不需要搜索整个图像,只需要沿着对极线搜索。将一个图像中的点映射到另一个图像中的一条线(极线)。在某些情况下,你将无法在图像中定位极点,它们可能在图像之外(这意味着,一个相机看不到另一个)。因此,为了找到极点的位置,我们可以找到许多的极线并找到它们的交点。这里极线的计算与选择的特征点有非常大的关系,要有足够好的特征来表明是同一个位置。原创 2022-12-16 23:16:01 · 854 阅读 · 1 评论 -
【OpenCV-Python】教程:6-2 Pose Estimation (姿态估计)
给定一个图案图像,我们可以利用上面的信息来计算它的姿态,或者物体在空间中的位置,比如它是如何旋转的,它是如何位移的等等。对于平面物体,我们可以假设Z=0,这样,现在的问题是如何将相机放置在空间中以看到我们的模式图像。因此,如果我们知道物体在空间中的位置,我们就可以在其中绘制一些2D图来模拟3D效果。我们的问题是,我们想要在棋盘的第一个角上绘制3D坐标轴(X, Y, Z轴)。X轴为蓝色,Y轴为绿色,Z轴为红色。所以实际上,Z轴应该是垂直于棋盘平面的。寻找和求解目标点在3D空间里的位置到2D空间里的映射。原创 2022-12-16 20:53:58 · 1476 阅读 · 0 评论 -
【OpenCV-Python】教程:6-1 相机标定
通过改变这个参数,您可以只检索合理的像素alpha=0,如果角落中有有价值的信息alpha=1,则保留所有原始图像像素,或者获得介于两者之间的东西。我们找到一些我们已经直到相对位置的特定点,例如,国际象棋棋盘上的正方形角,我们直到这些点在现实空间中的坐标,也直到图像中的坐标,所以我们可以解出失真参数,为了获得更好的结果,我们至少需要10个测试模式。距离图像中心越远的点,径向畸变越大。该函数显示每个单独的角点,如果棋盘没有找到,显示检测到的检测为红色的圆圈,如果找到了棋盘,则显示彩色的角点和其连线;原创 2022-12-16 00:29:13 · 3721 阅读 · 2 评论 -
【OpenCV-Python】教程:5-3 光流
所以从用户的角度来看,想法很简单,我们给一些点来跟踪,我们得到了这些点的光流矢量,但还是有一些问题,例如大的运动就失效了,为了解决这个问题,我们使用金字塔,当金字塔在上升时,小的运动被移除了,大的运动变成了小的运动,所以通过运用 Lucas-Kanade, 我们得到了光流。光流是由物体或相机的运动引起的图像物体在两个连续帧之间的表观运动模式。是不知道的,一个方程不能求解两个未知参数,所以,有很多方法来求解该问题,例如其中的 Lucas-Kanade 方法。块,所以,9个点的运动方向相同,可以求出9个点的。原创 2022-12-15 14:30:29 · 1778 阅读 · 0 评论 -
【OpenCV-Python】教程:5-2 Meanshift-Camshift (Continuously Adaptive Meanshift) 均值漂移
有一个问题,窗口始终保持了同样的大小,即使目标在变大或者变小,这是非常不好的。假设有一个点集(或者一个像素分布,类似于直方图反向投影),给定一个小的窗口,然后需要移动这个窗口来是的像素密度或者(像素个数)最大化。所以,我们通常传递直方图反向投影和初始的目标框,当目标移动时,很明显,移动就会体现在直方图反向投影图像中,结果,均值漂移算法将移动窗口到最大密度的新位置。,如此往复不停的去寻找点集的重心,直到移动的距离很小或者移动次数达到设定的阈值,就会停止移动,我们定义最终的窗口为。初始的窗口为蓝色的圆。原创 2022-12-14 23:18:26 · 335 阅读 · 0 评论 -
【OpenCV-Python】教程:5-1 背景减法
背景相减(BS)是一种常用且广泛使用的技术,用于通过使用静态相机来生成前景掩模(即,包含属于场景中运动对象的像素的二值图像)。顾名思义,BS计算前景掩码,在当前帧和背景模型之间执行减法,该模型包含场景的静态部分,或者更一般地,考虑到观察到的场景的特性,可以认为是背景的所有内容。背景初始化背景更新。原创 2022-12-13 08:46:20 · 1477 阅读 · 0 评论 -
【OpenCV-Python】教程:4-10 特征匹配和单应性查找对象
我们已经看到,在匹配时可能会有一些错误,这可能会影响结果。因此,提供正确估计的良好匹配被称为内值,其余的被称为异常值。我们使用queryImage,在其中找到一些特征点,我们使用另一个trainImage,也在该图像中找到特征,并在其中找到最佳匹配。简而言之,我们在另一张杂乱的图像中找到了物体的某些部分的位置。为此,我们可以使用calib3d模块中的函数,即cv2.findHomography()。如果我们从两个图像中传递点的集合,它会找到那个物体的透视变换。它需要至少四个正确的点来找到变换。原创 2022-12-12 23:09:35 · 704 阅读 · 0 评论 -
【OpenCV-Python】教程:4-9 特征匹配 match
对于基于二进制字符串的描述符,如ORB, BRIEF, BRISK等等,应该使用NORM_HAMMING,它使用汉明距离作为度量。如果为真,Matcher只返回值为(i,j)的匹配,这样集合A中的第i个描述符与集合B中的第j个描述符是最佳匹配,反之亦然。它将两张图像水平堆叠,并从第一张图像连接到第二张图像,以显示最佳匹配。Brute-Force Matcher字面意思是蛮力匹配器,所以它的过程也很简单,从一个集合里取出一个特征描述子,然后与第二个集合里的特征逐个的进行匹配比较。绘制两幅图像中的匹配的点。原创 2022-12-11 21:29:24 · 1091 阅读 · 0 评论