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

时间:2018-01-29 18:00:12

标签: python opencv opencv-python

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

var menuItems;
function getMenuItems(){
    $.ajax({
        url: "js/sporkAjax.pl",
        datatype: "script", /*Also tried json, which wasn't much better*/
        data: {func: "getMenuItems", type: "script"},
        success: function(data){
            menuItems = data;
            // You parse the string into an Object
            const obj = JSON.parse(data);
            console.log(obj.Beer.IDs);
        }
    });
}

但它会抛出类似于此的错误。

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

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

2 个答案:

答案 0 :(得分:1)

来自OpenCV 2.4教程:

  

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

     

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

     

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

     

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

     

请注意,输入图像可以按两倍(两个维度)进行划分非常重要。否则,将显示错误。

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

答案 1 :(得分:0)

抱歉,我忘了给出here给出的正确答案。

pyrdown,pyrup的因子为2.因此,为了处理奇数,我们必须认为dstsize是+ - 1像素。

def gaussian_pyramid(image, scale=2, minSize=(60, 60)):
   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