OpenCV Python代码转换为OpenCV C++

2024-05-15 15:23:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用OpenCV把OpenCV/NuMPy python代码翻译成C++,但是我有一些问题,因为我对Python真的很新。在

完整的代码是可用的here,并执行维纳反褶积。总之,以下是几行:

psf /= psf.sum()
psf_pad = np.zeros_like(img)
kh, kw = psf.shape
psf_pad[:kh, :kw] = psf #1
PSF = cv2.dft(psf_pad, flags=cv2.DFT_COMPLEX_OUTPUT, nonzeroRows = kh)
PSF2 = (PSF**2).sum(-1) #2
iPSF = PSF / (PSF2 + noise)[...,np.newaxis] #3
RES = cv2.mulSpectrums(IMG, iPSF, 0)
res = cv2.idft(RES, flags=cv2.DFT_SCALE | cv2.DFT_REAL_OUTPUT )

psfpsf_pad是numpy数组。在

我用#number注意到了我不理解的行。在

我认为这些台词的作用是:

第1行:psf_pad[:kh, :kw] = psf

这一行似乎用psf2D数组填充psf_pad的开头。在

第2行:PSF2 = (PSF**2).sum(-1)

从我所读到的,带有-1参数的sum函数是调用它的矩阵的行和。 所以我想OpenCV的等价物一定是^{}函数。在

第3行:iPSF = PSF / (PSF2 + noise)[...,np.newaxis]

这个我真的不明白,它似乎改变了阵列。但我不太明白。在

谢谢你的帮助。在


Tags: 代码outputnpcv2opencvflagssumpad