如何在 cv2.pyrDown() 或 pyrUp() 方法中指定自定义输出大小

GPr*_*hap 5 python opencv opencv-python

我想在图像上应用cv2.pyrDown()时明确指定图像的输出大小。

def gaussian_pyramid(image, scale=1.5, minSize=(30, 30)):
    yield image
    while True:
        w = int(image.shape[1] / scale)
        h = int(image.shape[0] / scale)
        image = cv2.pyrDown(image, dstsize=(w, h))
        if image.shape[0] < minSize[1] or image.shape[1] < minSize[0]:
            break
        yield image
Run Code Online (Sandbox Code Playgroud)

但它抛出了一个类似于此的错误。

OpenCV Error: Assertion failed (ssize.width > 0 && ssize.height > 0 && std::abs(dsize.width*2 - ssize.width) <= 2 && std::abs(dsize.height*2 - ssize.height) <= 2) in pyrDown_, file /io/opencv/modules/imgproc/src/pyramids.cpp, line 873
Run Code Online (Sandbox Code Playgroud)

任何想法如何将图像的输出大小指定为方法参数。

Nic*_*man 1

来自 OpenCV 2.4 教程:

pyrDown( tmp, dst, Size( tmp.cols/2, tmp.rows/2 )

tmp:当前图像,用src原始图像初始化。

dst:目标图像(将显示在屏幕上,据说是输入图像的一半

Size( tmp.cols/2, tmp.rows/2):目标大小。由于我们正在进行下采样,pyrDown 预计输入图像大小的一半(在本例中为 tmp)。

请注意,重要的是输入图像可以除以两倍(在两个维度上)。否则,将显示错误。

这是取自 C++ 教程的,但它应该同样适用于 Python。