其中包含OpenCV490纯dll加载方法 和 OpenCV455的注册COM安装方法

 

1. 什么是 OpenCV?

OpenCV(Open Source Computer Vision Library) 是一个开源的计算机视觉和图像处理库,支持多种编程语言(如 Python、C++)。它提供了丰富的函数和工具,用于处理图像和视频,实现如图像处理、目标检测、特征提取、视频分析等功能。

2. 什么是 DLL(动态链接库)?

DLL(Dynamic Link Library) 是一种包含可由多个程序共享的代码和数据的文件。在 Windows 系统中,DLL 文件通常用于提供特定的功能或资源,供应用程序在运行时调用。在使用 AHK 调用 OpenCV 时,需要加载相应的 DLL 文件以访问 OpenCV 的功能。

3. 什么是 COM(组件对象模型)?

COM(Component Object Model) 是微软开发的一种用于进程间通信的技术,允许不同的应用程序组件互相协作。通过注册 COM 对象,应用程序可以调用这些对象的方法和属性。在 AHK 中,可以通过 COM 接口调用已注册的 OpenCV 功能。

 

打包下载地址:

蓝奏云:https://wwp.lanzouj.com/iCJSh1v85fta   提取码:ahk6

123网盘:https://www.123pan.com/s/ufi3Td-G8O53.html   提取码:ahk6

 

OpenCV455的注册COM安装方法.ahk

; autoit_opencv_com455.dll优点:体积小。缺点:只注册COM注册方法,不支持dll直接加载。

; 以下为示例代码,如果更新了dll,把455.dll替换成最新版的版本号名称即可

; 加载并初始化OpenCV
hOpenCV := DllCall("LoadLibrary", "Str", "opencv_world455.dll", "Ptr")
hOpenCVCom := DllCall("LoadLibrary", "Str", "autoit_opencv_com455.dll", "Ptr")

Try cv := ComObjCreate("OpenCV.cv")
  catch
    DllCall("autoit_opencv_com455.dll\DllInstall", "int", 1, "Wstr", A_IsAdmin=0 ? "user" : "", "cdecl")  ; 注册COM
    , cv := ComObjCreate("OpenCV.cv")

; 等效加载图片示例
img := cv.imread("Lena.png")  ; 不支持加载带中文路径的图片,但是可以相对路径加载
cv.imshow("Image", img)
cv.waitKey()
cv.deStroyAllWindows()
Return

 

OpenCV490加载dll方法.ahk

; ; autoit_opencv_com490.dll优点:支持dll直接加载和COM注册。缺点:体积大
; https://www.autohotkey.com/boards/viewtopic.php?f=6&t=96394

hOpencv := DllCall("LoadLibrary", "Str", "opencv_world490.dll", "Ptr")
hOpencvFfmpeg := DllCall("LoadLibrary", "Str", "opencv_videoio_ffmpeg490_64.dll", "Ptr")

autoit_opencv_com_path := A_ScriptDir "\autoit_opencv_com490.dll"
hOpencvCom := DllCall("LoadLibrary", "Str", autoit_opencv_com_path, "Ptr")
ComObjCreate := Func("_ComObjCreate").Bind(autoit_opencv_com_path)

; ComObject需要通过Call进行创建。
cv := ComObjCreate.Call("OpenCV.cv")

_ComObjCreate(opencvPath, ComObject) {
  DllCall(opencvPath "\DllActivateManifest")
  ComObject := ComObjCreate(ComObject)
  DllCall(opencvPath "\DllDeactivateActCtx")
  Return ComObject
}

; 等效加载图片示例
img := cv.imread("Lena.png")  ; 不支持加载带中文路径的图片,但是可以相对路径加载
cv.imshow("Image", img)
cv.waitKey()
cv.deStroyAllWindows()
Return

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。