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。

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