我想在图像上应用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
任何想法如何指定图像的输出大小作为方法参数。
答案 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