OpenCV系列 - 作者:cc 原链接:https://www.cnblogs.com/ff888/p/16750837.html
AHK调用opencv.dll读取并打开并保存图像示例
本节大部分内容的注释在上一节,故除了未出现过的内容不重复注释。
#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("2.png") cv.imwrite("new.png", img) /* cv.imwrite(filename, img, params) filename:需要保存图像的文件名,要保存图片为哪种格式,就带什么后缀。 img:要保存的图像。 params:表示为特定格式保存的参数编码。它针对特定的格式:对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;对于png ,第三个参数表示的是压缩级别,默认为3。 cv::IMWRITE_JPEG_QUALITY = 1, 对于JPEG,它可以是从0到100的质量(越高越好)。默认值为95。 cv::IMWRITE_JPEG_PROGRESSIVE = 2, 启用JPEG功能,0或1,默认为False。 cv::IMWRITE_JPEG_OPTIMIZE = 3, 启用JPEG功能,0或1,默认为False。 cv::IMWRITE_JPEG_RST_INTERVAL = 4, JPEG重启间隔,0 - 65535,默认为0 - 无重启。 cv::IMWRITE_JPEG_LUMA_QUALITY = 5, 单独的亮度质量等级,0 - 100,默认为0 - 不使用。 cv::IMWRITE_JPEG_CHROMA_QUALITY = 6, 单独的色度质量等级,0 - 100,默认为0 - 不使用。 cv::IMWRITE_PNG_COMPRESSION = 16, 对于PNG,它可以是从0到9的压缩级别。值越高意味着更小的尺寸和更长的压缩时间。如果指定,则策略更改为IMWRITE_PNG_STRATEGY_DEFAULT(Z_DEFAULT_STRATEGY)。默认值为1(最佳速度设置)。 cv::IMWRITE_PNG_STRATEGY = 17, 其中一个品种:: ImwritePNGFlags,默认为IMWRITE_PNG_STRATEGY_RLE。 cv::IMWRITE_PNG_BILEVEL = 18, 二进制级别PNG,0或1,默认为0。 cv::IMWRITE_PXM_BINARY = 32, 对于PPM,PGM或PBM,它可以是二进制格式标志,0或1.默认值为1。 cv::IMWRITE_EXR_TYPE = (3 << 4) + 0, cv::IMWRITE_EXR_COMPRESSION = (3 << 4) + 1, cv::IMWRITE_WEBP_QUALITY = 64, 覆盖EXR存储类型(默认为FLOAT(FP32))对于WEBP,它可以是1到100的质量(越高越好)。默认情况下(不带任何参数),如果质量高于100,则使用无损压缩。 cv::IMWRITE_PAM_TUPLETYPE = 128, 对于PAM,将TUPLETYPE字段设置为为格式定义的相应字符串值。 cv::IMWRITE_TIFF_RESUNIT = 256, 对于TIFF,用于指定要设置的DPI分辨率单位; 请参阅libtiff文档以获取有效值。 cv::IMWRITE_TIFF_XDPI = 257, 对于TIFF,用于指定X方向DPI。 cv::IMWRITE_TIFF_YDPI = 258, 对于TIFF,用于指定Y方向DPI。 cv::IMWRITE_TIFF_COMPRESSION = 259, 对于TIFF,用于指定图像压缩方案。请参阅libtiff以获取与压缩格式对应的整数常量。注意,对于深度为CV_32F的图像,仅使用libtiff的SGILOG压缩方案。对于其他支持的深度,可以通过此标志指定压缩方案; LZW压缩是默认值。 cv::IMWRITE_JPEG2000_COMPRESSION_X1000 = 272, 对于JPEG2000,用于指定目标压缩率(乘以1000)。该值可以是0到1000.默认值是1000。 */ cv.imshow("Image", img) cv.waitKey() cv.destroyAllWindows()
上面用到的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.imwrite("new.png", img) cv.waitKey() cv.destroyAllWindows()
有错误请联系我改正!
本系列所有贡献者(AutoHotKey中文社区群友)不分先后:天黑请闭眼,zzZ…,演好自己,僵尸,城西,Tebayaki。
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
评论(0)