gpt4 book ai didi

python - 由于 pyrUp/pyrDown,输入参数的大小不匹配?

转载 作者:太空宇宙 更新时间:2023-11-03 21:21:43 25 4
gpt4 key购买 nike

我已经搜索过但找不到任何相关信息,如果这是一个重复的问题,我们深表歉意。

我目前正在学习 OpenCV,在尝试获取拉普拉斯图像时遇到了数组大小的问题。基本上,与高斯金字塔的相同级别相比,cv2.pyrUp() 返回的结果多了一个“行”,这导致它抛出输入参数大小错误。以前有人遇到过这个问题吗?我该怎么做才能解决?

这是我的初始代码:

img = cv2.imread('test.jpg', 1)
G = img.copy()
gpA =[G]
for i in range(0,5):
G = cv2.pyrDown(G)
gpA.append(G)

lpA = [gpA[5]]
for i in xrange(5,0,-1):
GE = cv2.pyrUp(gpA[i])
w,d,h = GE.shape #debug
print w,d,h

x,y,z = gpA[i-1].shape #debug
print x,y,z

L = cv2.subtract(gpA[i-1], GE)
lpA.append(L)

我使用了以下代码:http://docs.opencv.org/3.1.0/dc/dff/tutorial_py_pyramids.html#gsc.tab=0

我得到输入参数的大小错误,调试结果为

58 90 3 
57 90 3

然而,通过更改从 pyrUp 部分开始的代码以从第一级开始迭代:

lpA = [gpA[5]]
for i in xrange(0,5):
GE = cv2.pyrUp(gpA[i+1])
w,d,h = GE.shape #debug
print w,d,h
x,y,z = gpA[i].shape #debug
print x,y,z
L = cv2.subtract(gpA[i], GE)
lpA.append(L)

我从调试中得到的结果是:

900 1440 3
900 1440 3
450 720 3
450 720 3
226 360 3
225 360 3

所以在这种情况下,循环在遇到相同问题之前设法迭代了 2 次。

最佳答案

这里的问题是,有时您会得到一张行数不均匀的图像。假设您有 2 * n + 1 行。 pyrDown 将为您提供包含 n + 1 行的图像。因此,当您执行 pyrUp 时,您最终会得到一个包含 2*n + 2 行的图像,比以前多了一个。

解决方案是,当你执行 pyrUp 时,你应该这样做:

size = (gpA[i].shape[1], gpA[i].shape[0])
GE = cv2.pyrUp(gpA[i+1], dstsize = size)

这样你的图像 GE 将具有与 gpA[i] 相同的大小。

关于python - 由于 pyrUp/pyrDown,输入参数的大小不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37339221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com