1

Тема: AHK: OpenCV com

https://www.autoitscript.com/forum/topi … ncv-v4-udf
На автохотки пользоваться как-то так:

opencv_world_path := A_ScriptDir "\opencv-4.7.0-windows\opencv\build\x64\vc16\bin\opencv_world470.dll"
opencv_ffmpeg_path := A_ScriptDir "\opencv-4.7.0-windows\opencv\build\x64\vc16\bin\opencv_videoio_ffmpeg470_64.dll"
autoit_opencv_com_path := A_ScriptDir "\autoit-opencv-com\autoit_opencv_com470.dll"

hOpencv := DllCall("LoadLibrary", "str", opencv_world_path, "ptr")
hOpencvFfmpeg := DllCall("LoadLibrary", "str", opencv_ffmpeg_path, "ptr")
hOpencvCom := DllCall("LoadLibrary", "str", autoit_opencv_com_path, "ptr")
ComObjCreate := Func("_ComObjCreate").Bind(autoit_opencv_com_path)

; ком объект создаем через Call
cv := ComObjCreate.Call("OpenCV.cv")
img := cv.imread("D:\Unnamed.bmp")
cv.imshow("Image", img)
cv.waitKey()
cv.destroyAllWindows()
return


_ComObjCreate(opencvPath, comobject)
{
   DllCall(opencvPath "\DllActivateManifest")
   comobject := ComObjCreate(comobject)
   DllCall(opencvPath "\DllDeactivateActCtx")
   return comobject
}

Рисование контура:

cv := ComObjCreate.Call("OpenCV.cv")
img := cv.imread("D:\Unnamed.bmp")
img_grey := cv.cvtColor(img, CV_COLOR_BGR2GRAY := 6)
cv.threshold(img_grey, 100, 255, CV_THRESH_BINARY := 0)
thresh := cv.extended.1
contours := cv.findContours(thresh, CV_RETR_TREE := 3, CV_CHAIN_APPROX_SIMPLE := 2)
arr := ComObjArray(VT_VARIANT:=12, 4)
arr[0] := 0
arr[1] := 0
arr[2] := 255
arr[3] := 0
cv.drawContours(img, contours, -1, arr, 2)
cv.imshow("Image", img)
cv.waitKey()
cv.destroyAllWindows()
return


_ComObjCreate(opencvPath, comobject)
{
   DllCall(opencvPath "\DllActivateManifest")
   comobject := ComObjCreate(comobject)
   DllCall(opencvPath "\DllDeactivateActCtx")
   return comobject
}

Тема для обсуждения