OpenCV系列 - 作者:cc 原链接:https://www.cnblogs.com/ff888/p/16750830.html
简介
OpenCV 于 1999 年由 Gary Bradsky 在英特尔创立,第一个版本于 2000 年问世。Vadim Pisarevsky 加入了 Gary Bradsky,负责管理英特尔的俄罗斯软件 OpenCV 团队。2005 年,OpenCV 被用于 Stanley ,这辆车赢得了 2005 年美国穿越沙漠 DARPA 机器人挑战大赛。后来,在 Willow Garage 的支持下,在 Gary Bradsky 和 Vadim Pisarevsky 主导下,OpenCV 项目的开发工作变得活跃起来。OpenCV 现在支持与计算机视觉和机器学习相关的众多算法,并且每天都在拓展中。
OpenCV(开源计算机视觉库)是在 BSD 许可下发布的,因此它可以免费用于学术和商业用途。
它具有 C++,Python 和 Java 接口,支持 Windows,Linux,Mac OS,iOS 和 Android。
OpenCV 专为提高计算效率而设计,专注于实时应用。该库以优化的 C/C++ 编写,可以利用多核处理。
通过 OpenCL 启用,它可以利用底层异构计算平台的硬件加速。
OpenCV 在全球范围内采用,拥有超过 4.7 万用户社区,估计下载量超过 1400 万。
用途范围从交互式艺术,到地雷检查,网上拼接地图或高级机器人。
AHK调用opencv.dll读取并打开图像示例
#NoEnv ;不检查空变量是否为环境变量(建议所有新脚本使用)。 SendMode Input ;SendInput 和 SendPlay 与 Send 使用相同的语法, 但通常更快更可靠. 此外, 它们缓存了发送期间任何物理的键盘或鼠标活动, 这样避免了在发送时夹杂用户的键击。 SetWorkingDir %A_ScriptDir% ;让脚本无条件使用它所在的文件夹作为工作目录。 hOpencv := DllCall("LoadLibrary", "str", "opencv_world455.dll", "ptr") ;预加载opencv_world455.dll,避免了 DllCall 内部每次调用 LoadLibrary 和 FreeLibrary 的需要, 预先明确装载它可以显著提高执行效率。 hOpencvCom := DllCall("LoadLibrary", "str", "autoit_opencv_com455.dll", "ptr") ;预加载autoit_opencv_com455.dll。 DllCall("autoit_opencv_com455.dll\DllInstall", "int", 1, "wstr", A_IsAdmin = 0 ? "user" : "", "cdecl") cv := ComObjCreate("OpenCV.cv") ;创建 COM 对象。 img := cv.imread("2.png") ;img := cv.imread("2.png")等于img := cv.imread("2.png", 1) 这里的1就是默认参数 /* 读取图片,这里第二个参数的默认参数是1,也就是cv::IMREAD_COLOR = 1,读入一副彩色图片,忽略alpha通道。 cv.imread(filepath,flags) filepath:要读入图片的完整路径。 flags:读入图片的标志。 cv::IMREAD_UNCHANGED = -1, 如果设置,则按原样返回加载的图像(使用Alpha通道,否则会被裁剪) cv::IMREAD_GRAYSCALE = 0, 如果设置,则始终将图像转换为单通道灰度图像(编解码器内部转换)。 cv::IMREAD_COLOR = 1, 如果设置,请始终将图像转换为3通道BGR彩色图像。 cv::IMREAD_ANYDEPTH = 2, 如果设置,则在输入具有相应深度时返回16位/ 32位图像,否则将其转换为8位。 cv::IMREAD_ANYCOLOR = 4, 如果设置,则以任何可能的颜色格式读取图像。 cv::IMREAD_LOAD_GDAL = 8, 如果设置,使用gdal驱动程序加载图像 cv::IMREAD_REDUCED_GRAYSCALE_2 = 16, 如果设置,则始终将图像转换为单通道灰度图像,图像尺寸减小1/2。 cv::IMREAD_REDUCED_COLOR_2 = 17, 如果设置,则始终将图像转换为3通道BGR彩色图像,图像尺寸减小1/2。 cv::IMREAD_REDUCED_GRAYSCALE_4 = 32, 如果设置,则始终将图像转换为单通道灰度图像,图像尺寸减小1/4 cv::IMREAD_REDUCED_COLOR_4 = 33, 如果设置,则始终将图像转换为3通道BGR彩色图像,图像尺寸减小1/4 cv::IMREAD_REDUCED_GRAYSCALE_8 = 64, 如果设置,则始终将图像转换为单通道灰度图像,图像尺寸减小1/8。 cv::IMREAD_REDUCED_COLOR_8 = 65, 如果设置,则始终将图像转换为3通道BGR彩色图像,图像尺寸减小1/8。 cv::IMREAD_IGNORE_ORIENTATION = 128 如果设置,请不要根据EXIF的方向标志旋转图像。 cv.imread()函数是以多维数组形式存储的,此时得到的这个三维数组就是一个立方体,三维数组的第一维就是图片的高度,第二维是图片的宽度,第三维就是每个像素点在BGR通道的灰度值 cv.imread()的默认格式为bgr cv.imread()的默认通道格式HWC */ cv.imshow("Image", img) /* cv.imshow(winname, mat) cv.imshow()函数可以在窗口中显示图像。该窗口和图像的原始大小自适应(自动调整到原始尺寸) winname: 一个窗口名称(也就是我们对话框的名称),它是一个字符串类型。第二个参数是我们的图像。您可以创建任意数量的窗口,但必须使用不同的窗口名称。 mat: 需要显示的图像 */ cv.waitKey() /* cv.waitKey([, delay]) waitKey函数属于cv命名空间 一个int类型的参数,默认值为0,根据delay的名称可以猜测参数值是一个延时值 函数返回值为int类型 此函数的功能是等待一个按键按下 函数 Waitkey 在参数delay为正整数n时,延迟n毫秒,或者无限等待按键事件 (delay≤0时) 。由于操作系统在切换线程之间需要时间, 该函数不会等待完全延迟n ms, 它将等待至少延迟n ms, 这具体取决于当时计算机上运行的其他时间。如果在指定的时间之内没有按下键, 则返回按下的键或-1 的ascii码。函数的返回值是键盘按键键值的ascii码。 此函数是 HighGUI 中唯一可以提取和处理事件的方法, 因此需要定期调用它进行正常的事件处理, 除非在处理事件处理的环境中使用 HighGUI。 该函数仅在至少创建了一个 HighGUI 窗口并且该窗口处于活动状态时才有效。如果有多个 HighGUI 窗口, 则其中任何一个都可以处于活动状态。 延迟延迟以毫秒为单位。0是表示 "永远" 的特殊值。即参数值为0时,waitKey函数等待的时间是无限长。 waitKey函数是一个等待键盘事件的函数,参数值delay<=0时等待时间无限长,delay为正整数n时至少等待n毫秒的时间才结束。在等待的期间按下任意按键时函数结束,返回按键的键值(ascii码),等待时间结束仍未按下按键则返回-1。该函数用在处理HighGUI窗口程序,最常见的便是与显示图像窗口imshow函数搭配使用 */ cv.destroyAllWindows() ;销毁所有 HighGUI 窗口。
上面用到的dll和图片蓝奏云链接
dbgba优化整理OpenCV系列示例打包下载20240513:
天黑版opencv_ahk.dll使用(改变了调用方式,优化速度…)
相关文件:https://wwz.lanzouw.com/iAkK803eaaud
cv2.ahk和log.ahk来自社区群友zzZ…
可以用文件中的天黑版的v2h版ahk运行。
v2H版示例:打开图片
#DllLoad opencv_ahk.dll #include <cv2> #include <log> SetWorkingDir A_ScriptDir ;初始化opencv模块 cv := ObjFromPtr(DllCall('opencv_ahk.dll\opencv_init', 'ptr', DllCall(A_AhkPath '\ahkGetApi', 'ptr'), 'cdecl ptr')) img := cv.imread("src.png") cv.imshow("image", img) cv.waitKey() cv.destroyAllWindows()
有错误请联系我改正!
本系列所有贡献者(AutoHotKey中文社区群友)不分先后:天黑请闭眼,zzZ…,演好自己,僵尸,城西,Tebayaki。
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
评论(0)