首页 > 其他分享 >AHK调用opencv(十九)图像金字塔 – ahk_v2_beta3

AHK调用opencv(十九)图像金字塔 – ahk_v2_beta3

时间:2022-10-12 11:00:24浏览次数:83  
标签:img AHK imshow dll opencv ahk 金字塔 cv

图像金字塔是指一组图像且不同分辨率的子图集合,它是图像多尺度表达的一种,以多分辨率来解释图像的结构,主要用于图像的分割或压缩。一幅图像的金字塔是一系列以金字塔性质排列的分辨率逐步降低,且来源于同一张原始图的图像集合,如下图所示,它包括了五层图像,将这一层一层的图像比喻成金字塔。图像金字塔可以通过梯次向下采样获得,直到达到某个终止条件才停止采样,在向下采样中,层次越高,分辨率越低。  

高斯金字塔-向下采样(缩小)

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 := ComObject("OpenCV.cv")
img := cv.imread("2.png")
img_pyrDown := cv.pyrDown(img)
cv.imshow("Image", img)
cv.imshow("Image_pyrDown", img_pyrDown)
cv.waitKey()
cv.destroyAllWindows()

高斯金字塔-向上采样(放大)

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 := ComObject("OpenCV.cv")
img := cv.imread("2.png")
img_pyrup := cv.pyrUp(img)
cv.imshow("Image", img)
cv.imshow("Image_pyrup", img_pyrup)
cv.waitKey()
cv.destroyAllWindows()

拉普拉斯金字塔

拉普拉斯金字塔由高斯金字塔形成。没有专属功能。拉普拉斯金字塔图像仅与边缘图像相似。它的大部分元素都是零。它们用于图像压缩。拉普拉斯金字塔中的一个层次由高斯金字塔中的该层次与高斯金字塔中的上层的扩展版本之间的差异形成。

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 := ComObject("OpenCV.cv")
img := cv.imread("2.png")
Down := cv.pyrDown(img)
Down_up := cv.pyrUp(Down)
img_1 := cv.absdiff(img, Down_up) ;矩阵减法运算
cv.imshow("Image", img)
cv.imshow("Image1", img_1)
cv.waitKey()
cv.destroyAllWindows()

天黑版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/lena.png")
cv.imshow("image", img)
;高斯金字塔-向下采样(缩小)
cv.pyrDown(img, img_pyrDown := cv.MAT())
cv.imshow("img_pyrDown", img_pyrDown)
;高斯金字塔-向上采样(放大)
cv.pyrUp(img, img_pyrup := cv.MAT())
cv.imshow("img_pyrup", img_pyrup)
;拉普拉斯金字塔
;向下采样一次
cv.pyrDown(img, down := cv.MAT())
;向上采样一次
cv.pyrUp(down, down_up := cv.MAT())
cv.imshow("down_up", down_up)
;计算拉普拉斯金字塔图像
;原图 - 向上采样一次的图
cv.subtract(img, down_up, laplace := cv.MAT())
cv.imshow("laplace", laplace)
cv.waitKey()
cv.destroyAllWindows()

有错误请联系我改正!

本系列所有贡献者(AutoHotKey中文社区群友)不分先后:天黑请闭眼,zzZ…,演好自己,僵尸,城西,Tebayaki。

标签:img,AHK,imshow,dll,opencv,ahk,金字塔,cv
From: https://www.cnblogs.com/ff888/p/16783760.html

相关文章

  • AHK调用opencv(十六)形态转换 – ahk_v2_beta3
    形态学变换是基于图像形状的一些简单操作。它通常在二值图像上执行。它需要两个输入,一个是我们的原始图像,第二个是决定操作性质的结构元素或内核。两个基本的形态学操作是......
  • AHK调用opencv(十七)图像梯度 – ahk_v2_beta3
    1.Sobel和Scharr微分Sobel算子是一种联合高斯平滑加微分运算,因此对噪声的抵抗能力更强。可以指定要计算的导数的方向,垂直或水平(分别由参数、Yorder和Xorder指定)......
  • AHK调用opencv(十三)图像的几何变换 – ahk_v2_beta3
    SetWorkingDirA_ScriptDirhOpencv:=DllCall("LoadLibrary","str","opencv_world455.dll","ptr")hOpencvCom:=DllCall("LoadLibrary","str","autoit_opencv_co......
  • AHK调用opencv(五)保存视频
    ;调用opencv录制视频并且保存为文件#NoEnvSendModeInputSetWorkingDir%A_ScriptDir%hOpencv:=DllCall("LoadLibrary","str","opencv_world455.dll","ptr")hO......
  • AHK调用opencv(六)绘图功能
    #NoEnvSendModeInputSetWorkingDir%A_ScriptDir%hOpencv:=DllCall("LoadLibrary","str","opencv_world455.dll","ptr")hOpencvCom:=DllCall("LoadLibrary",......
  • AHK调用opencv(七)鼠标作为画笔
    #NoEnvSendModeInputSetWorkingDir%A_ScriptDir%hOpencv:=DllCall("LoadLibrary","str","opencv_world455.dll","ptr")hOpencvCom:=DllCall("LoadLibrary",......
  • AHK调用opencv(八)作为调色板的跟踪栏
    #NoEnv#Includeopencv_ahk_lib.ahkSendModeInputSetWorkingDir%A_ScriptDir%hOpencv:=DllCall("LoadLibrary","str","opencv_world455.dll","ptr")hOpencvCo......
  • OpenCV-图像读写(java版)
    @​​TOC​​图像读写Imgcodecs类中提供了图像的读写方法。使用imread()函数读取磁盘中的图像;使用imwrite()函数将图像写入磁盘中以下图为例演示。​​(图片来源网络)​​......
  • OpenCV-视频读写(java版)
    @​​TOC​​​​​OpenCV2中提供了两个类来实现视频的读写。读视频的类是​​VideoCapture​​,写视频的类是​​VideoWriter读视频VideoCapture既可以从视频文件读取图......
  • AHK调用opencv(四)播放视频文件
    本节内容对open()的另一种使用参数做了研究,注意这里open()里的参数是文件名。因为视频文件不同于相机,视频文件有时长,所以死循环中需要一个判断,判断视频帧是否结束,如果结束......