AHK调用opencv(六)绘图功能
#NoEnv SendMode Input SetWorkingDir %A_ScriptDir% hOpencv := DllCall("LoadLibrary", "str", "opencv_world455.dll", "ptr") hOpencvCom := DllCall("LoadLibrary", "str", "autoit_opencv_com455.dll", "ptr") DllCall("autoit_opencv_com455.dll\DllInstall", "int", 1, "wstr", A_IsAdmin = 0 ? "user" : "", "cdecl") cv := ComObjCreate("OpenCV.cv") img := cv.imread("test.png") ;读取图片 cv.line(img, ComArrayMake([0, 0]), ComArrayMake([511,511]), ComArrayMake([255,0,0]), 2) ;画线 ;img代表传入的图像,[0,0]代表起始点坐标,[511,511]代表结束点坐标,[255,0,0]代表颜色RGB值,2代表线或圆等的厚度。如果传 -1 就是像圆的闭合图形,它将填充形状。 cv.rectangle(img,ComArrayMake([384,0]),ComArrayMake([510,128]),ComArrayMake([0,255,0]),2) ;画矩形 cv.circle(img,ComArrayMake([447,63]), 63, ComArrayMake([0,0,255]), -1) ;画圆 cv.ellipse(img,ComArrayMake([256,256]),ComArrayMake([100,50]),0,0,180,255,-1) ;画椭圆 pts := ComObjCreate("OpenCV.VectorOfpoint") pts.push_back(ComArrayMake([0, 45])) pts.push_back(ComArrayMake([0, 135])) pts.push_back(ComArrayMake([85, 175])) pts.push_back(ComArrayMake([175, 135])) pts.push_back(ComArrayMake([175, 45])) pts.push_back(ComArrayMake([85, 0])) cv.polylines(img, pts, ComObj(0xB, -1), ComArrayMake([0,255,255]), 2) ;画多边形 NumPut(Scale := 3, temp := 0, "double") Scale := NumGet(temp, "double") cv.putText(img, "Hello Opencv", ComArrayMake([50, 450]), 0, Scale, ComArrayMake([0, 0, 255]), 2) ;给图像加文字 cv.imshow("Image", img) ;显示图片 cv.waitKey() ;等待按键输入,参数形式为ASCII 数值(例如a键为97)默认接收任意键 cv.destroyAllWindows() ;销毁所有opencv窗口 ComArrayMake(inputArray) ;这个函数用来转换参数,比如函数原来需要(0,0),调用这个函数ComArrayMake([0,0])就可以转换过去 { arr := ComObjArray(VT_VARIANT:=12, inputArray.Length()) Loop,% inputArray.Length() { arr[A_Index-1] := inputArray[A_Index] } return arr }
上面用到的dll和图片蓝奏云链接
https://wwm.lanzouw.com/iHcJi0033fob
天黑版opencv_ahk.dll使用(改变了调用方式,优化速度...)
相关文件:https://wwz.lanzouw.com/iAkK803eaaud
cv2.ahk和log.ahk来自社区群友zzZ...
可以用文件中的天黑版的v2h版ahk运行。
示例:绘图功能
#Dllload lib #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("image/test.png") cv.line(img, [0, 0], [511, 511], [255, 0, 0], 2) ;画线 cv.rectangle(img, [384, 0], [510, 128], [0, 255, 0], 2) ;画矩形 cv.circle(img, [447, 63], 63, [0, 0, 255], -1) ;画圆 cv.ellipse(img, [256, 256], [100, 50], 0, 0, 180, [255], -1) ;画椭圆 cv.polylines(img, cv.Vector_Point([[0, 45], [0, 135], [85, 175], [175, 135], [175, 45], [85, 0]]), true, [0, 255, 255], 2) ;画多边形 cv.putText(img, "Hello Opencv", [50, 450], 0, 3.0, [0, 0, 255], 2) ;给图像加文字 cv.TextDraw("仿宋", 40, 100, 0, 0).putText(img, '中文', [10, 120], [255 ,255, 255]) ;给图像加中文文字 ;TextDraw()5个参数 字体 字号 粗细 斜体 下划线 cv.imshow("image", img) cv.waitKey() cv.destroyAllWindows()
有错误请联系我改正!
本系列所有贡献者(AutoHotKey中文社区群友)不分先后:天黑请闭眼,zzZ...,演好自己,僵尸,城西,Tebayaki。
本文作者:c/
本文链接:https://www.cnblogs.com/ff888/p/16783521.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端