OpenCV系列 - 作者:cc 原链接:https://www.cnblogs.com/ff888/p/16783511.html
本节内容对open()的另一种使用参数做了研究,注意这里open()里的参数是文件名。因为视频文件不同于相机,视频文件有时长,所以死循环中需要一个判断,判断视频帧是否结束,如果结束就退出循环。
#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") cap := ComObjCreate("OpenCV.cv.VideoCapture") frame := ComObjCreate("OpenCV.cv.MAT") cap.open("test001.avi") /* bool VideoCapture::open(const string& filename); bool VideoCapture::open(int device); 功能:打开一个视频文件或者打开一个捕获视频的设备(也就是摄像头) 参数: filename – 打开的视频文件名。 device – 打开的视频捕获设备id ,如果只有一个摄像头可以填0,表示打开默认的摄像头。 */ istrue := cap.isOpened() ;返回布尔值,成功打开时值为true,反之为false ;MsgBox, % istrue While istrue{ ret := cap.read(frame) if not ret{ ;这里加入一个判断,因为视频结束之后imshow()读不到视频帧就会报错 break } img_gray := cv.cvtColor(frame, CV_COLOR_BGR2GRAY := 6) cv.imshow("Image", img_gray) }
上面用到的dll和图片蓝奏云链接
dbgba优化整理OpenCV系列示例打包下载20240513:
天黑版opencv_ahk.dll使用(改变了调用方式,优化速度…)
相关文件:https://wwz.lanzouw.com/iAkK803eaaud
播放视频依赖opencv_videoio_ffmpeg455_64.dll,链接https://wwz.lanzouw.com/iBP3A03ed1vi密码:fcd2
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')) cap := cv.VideoCapture() frame := cv.Mat() cap.open("test001.avi") result := cap.isOpened() while result{ ret := cap.read(frame) if not ret{ break } cv.imshow("image", frame) } cv.waitKey() cv.destroyAllWindows()
有错误请联系我改正!
本系列所有贡献者(AutoHotKey中文社区群友)不分先后:天黑请闭眼,zzZ…,演好自己,僵尸,城西,Tebayaki。
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
评论(0)