随笔分类 -  AutoHotKey-OpenCV

摘要:#NoEnv #Include opencv_ahk_lib.ahk SendMode Input SetWorkingDir %A_ScriptDir% hOpencv := DllCall("LoadLibrary", "str", "opencv_world455.dll", "ptr") h 阅读全文
posted @ 2022-10-12 11:12 c/ 阅读(87) 评论(0) 推荐(0)
摘要:什么是轮廓? 轮廓可以简单地解释为连接具有相同颜色或强度的所有连续点(沿边界)的曲线。轮廓是用于形状分析以及对象检测和识别的有用工具。 为了获得更高的准确性,请使用二进制图像。因此,在找到轮廓之前,请应用阈值或 Canny 边缘检测。 从OpenCV 3.2开始,**findContours()** 阅读全文
posted @ 2022-10-12 11:03 c/ 阅读(271) 评论(0) 推荐(0)
摘要:图像金字塔是指一组图像且不同分辨率的子图集合,它是图像多尺度表达的一种,以多分辨率来解释图像的结构,主要用于图像的分割或压缩。一幅图像的金字塔是一系列以金字塔性质排列的分辨率逐步降低,且来源于同一张原始图的图像集合,如下图所示,它包括了五层图像,将这一层一层的图像比喻成金字塔。图像金字塔可以通过梯次 阅读全文
posted @ 2022-10-12 10:53 c/ 阅读(169) 评论(0) 推荐(0)
摘要:Canny边缘检测于1986年由JOHN CANNY首次在论文《A Computational Approach to Edge Detection》中提出,就此拉开了Canny边缘检测算法的序幕。 Canny边缘检测是从不同视觉对象中提取有用的结构信息并大大减少要处理的数据量的一种技术,目前已广泛 阅读全文
posted @ 2022-10-12 10:51 c/ 阅读(210) 评论(0) 推荐(0)
摘要:1.Sobel 和 Scharr 微分 Sobel 算子是一种联合高斯平滑加微分运算,因此对噪声的抵抗能力更强。可以指定要计算的导数的方向,垂直或水平(分别由参数、Yorder 和 Xorder 指定)。还可以通过参数 ksize 指定内核的大小。如果 ksize=-1,则使用 3x3 Scharr 阅读全文
posted @ 2022-10-12 10:49 c/ 阅读(83) 评论(0) 推荐(0)
摘要:形态学变换是基于图像形状的一些简单操作。它通常在二值图像上执行。它需要两个输入,一个是我们的原始图像,第二个是决定操作性质的结构元素或内核。两个基本的形态学操作是腐蚀和膨胀。 1.腐蚀 腐蚀算法使二值图像缩小一圈,删除对象边界的某些像素,其运算过程就是使用用3X3的结构元素,扫描二值图像的每一个像素 阅读全文
posted @ 2022-10-12 10:48 c/ 阅读(113) 评论(0) 推荐(0)
摘要:二维卷积(图像滤波) 与一维信号一样,图像也可以通过各种低通滤波器(LPF)、高通滤波器(HPF)等进行过滤。LPF 有助于消除噪音、模糊图像等。HPF 滤波器有助于在图像中找到边缘。 opencv 提供了函数cv.filter2D(),用于将内核与图像卷积起来。 相关链接:https://www. 阅读全文
posted @ 2022-10-12 10:43 c/ 阅读(142) 评论(0) 推荐(0)
摘要:简单阈值法 此方法是直截了当的。如果像素值大于阈值,则会被赋为一个值(可能为白色),否则会赋为另一个值(可能为黑色)。使用的函数是 cv.threshold。第一个参数是源图像,它应该是灰度图像。第二个参数是阈值,用于对像素值进行分类。第三个参数是 maxval,它表示像素值大于(有时小于)阈值时要 阅读全文
posted @ 2022-10-12 10:17 c/ 阅读(211) 评论(0) 推荐(0)
摘要:SetWorkingDir A_ScriptDir hOpencv := DllCall("LoadLibrary", "str", "opencv_world455.dll", "ptr") hOpencvCom := DllCall("LoadLibrary", "str", "autoit_o 阅读全文
posted @ 2022-10-12 10:13 c/ 阅读(153) 评论(0) 推荐(0)
摘要:改变颜色空间 在 OpenCV 中有超过 150 种颜色空间转换的方法(https://docs.opencv.org/4.x/d8/d01/group__imgproc__color__conversions.html#gga4e0972be5de079fed4e3a10e24ef5ef0a353 阅读全文
posted @ 2022-10-12 10:11 c/ 阅读(196) 评论(0) 推荐(0)
摘要:许多 OpenCV 功能都使用 SSE2,AVX 等进行了优化。它还包含未经优化的代码。因此,如果我们的系统支持这些功能,我们应该利用它们(几乎所有现代处理器都支持它们)。优化功能在编译时是默认启用的,因此,OpenCV 在启用时运行优化代码,否则运行未优化代码。您可以使用cv.useOptimiz 阅读全文
posted @ 2022-10-12 10:09 c/ 阅读(159) 评论(0) 推荐(0)
摘要:图像加法 通过 OpenCV 函数,cv.add()将两个图像相加,两个图像应该具有相同的深度和类型,或者第二个图像可以是像素值,比如(255,255,255),白色值。 SetWorkingDir A_ScriptDir hOpencv := DllCall("LoadLibrary", "str 阅读全文
posted @ 2022-10-12 10:08 c/ 阅读(129) 评论(0) 推荐(0)
摘要:访问和修改像素值 先来理解一下,图像与一般的矩阵或张量有何不同(不考虑图像的格式,元数据等信息)。首先,一张图像有自己的属性,宽,高,通道数。其中宽和高是我们肉眼可见的属性,而通道数则是图像能呈现色彩的属性。我们都知道,光学三原色是红色,绿色和蓝色,这三种颜色的混合可以形成任意的颜色。常见的图像的像 阅读全文
posted @ 2022-10-12 10:05 c/ 阅读(745) 评论(0) 推荐(0)
摘要:#NoEnv #Include opencv_ahk_lib.ahk SendMode Input SetWorkingDir %A_ScriptDir% hOpencv := DllCall("LoadLibrary", "str", "opencv_world455.dll", "ptr") h 阅读全文
posted @ 2022-10-12 10:02 c/ 阅读(149) 评论(0) 推荐(0)
摘要:#NoEnv SendMode Input SetWorkingDir %A_ScriptDir% hOpencv := DllCall("LoadLibrary", "str", "opencv_world455.dll", "ptr") hOpencvCom := DllCall("LoadLi 阅读全文
posted @ 2022-10-12 10:00 c/ 阅读(178) 评论(0) 推荐(0)
摘要:#NoEnv SendMode Input SetWorkingDir %A_ScriptDir% hOpencv := DllCall("LoadLibrary", "str", "opencv_world455.dll", "ptr") hOpencvCom := DllCall("LoadLi 阅读全文
posted @ 2022-10-12 09:58 c/ 阅读(282) 评论(0) 推荐(0)
摘要:;调用opencv录制视频并且保存为文件 #NoEnv SendMode Input SetWorkingDir %A_ScriptDir% hOpencv := DllCall("LoadLibrary", "str", "opencv_world455.dll", "ptr") hOpencvC 阅读全文
posted @ 2022-10-12 09:55 c/ 阅读(178) 评论(0) 推荐(0)
摘要:本节内容对open()的另一种使用参数做了研究,注意这里open()里的参数是文件名。因为视频文件不同于相机,视频文件有时长,所以死循环中需要一个判断,判断视频帧是否结束,如果结束就退出循环。 #NoEnv SendMode Input SetWorkingDir %A_ScriptDir% hOp 阅读全文
posted @ 2022-10-12 09:54 c/ 阅读(219) 评论(0) 推荐(0)
摘要:#NoEnv ;不检查空变量是否为环境变量(建议所有新脚本使用)。 SendMode Input ;SendInput 和 SendPlay 与 Send 使用相同的语法, 但通常更快更可靠. 此外, 它们缓存了发送期间任何物理的键盘或鼠标活动, 这样避免了在发送时夹杂用户的键击。 SetWorki 阅读全文
posted @ 2022-10-03 17:31 c/ 阅读(403) 评论(0) 推荐(0)
摘要:AHK调用opencv.dll读取并打开并保存图像示例 本节大部分内容的注释在上一节,故除了未出现过的内容不重复注释。 #NoEnv SendMode Input SetWorkingDir %A_ScriptDir% hOpencv := DllCall("LoadLibrary", "str", 阅读全文
posted @ 2022-10-03 17:27 c/ 阅读(490) 评论(0) 推荐(0)