cv2.resize()几个坑

       想用cv2.resize()来进行双线性差值,把几个尺度不一样的特征图转换成同一尺度然后进行融合来着,因为是特征图,通道数比较多,不像灰度图或者rgb彩图。打算把每个通道当作一个灰度图那样遍历一遍,于是学习了一下cv2.resize(),有几个问题记录如下:

  • cv2.resize(src, (dst_w, dst_h), interpolation) #src是输入图,dst是目标图,w是宽,h是高,interpolation是差值方法

共有5种:

1)INTER_NEAREST - 最近邻插值法

2)INTER_LINEAR - 双线性插值法(默认)

3)INTER_AREA - 基于局部像素的重采样(resampling using pixel area relation)。对于图像抽取(image decimation)来说,这可能是一个更好的方法。但如果是放大图像时,它和最近邻法的效果类似。

4)INTER_CUBIC - 基于4x4像素邻域的3次插值法

5)INTER_LANCZOS4 - 基于8x8像素邻域的Lanczos插值

  • 
    import cv2
    import numpy as np
    import random
    
    a = [[234, 38, 22],
    [67, 44, 12],
    [89,65 ,63 ]]
    
    
    resize_pic = cv2.resize(a,(4,4))
    print(resize_pic)

出现错误T:ypeError: src is not a numpy array, neither a scalar

          原因是 a 要是数组类型,而我写的是list类型

  •  
import cv2
import numpy as np
import random

a = np.array([[234, 38, 22],
[67, 44, 12],
[89,65 ,63 ]])


resize_pic = cv2.resize(a,(4,4))
print(resize_pic)

 

出现错误:cv2.error: /home/maggie/opencv-3.4.0/modules/imgproc/src/resize.cpp:3922: error: (-215) func != 0 in function resize                                                                                                                                                                                           

解决办法:在a的后面加上.astype(np.uint8)如下:

import cv2
import numpy as np
import random

a = np.array([[234, 38, 22],
[67, 44, 12],
[89,65 ,63 ]]).astype(np.uint8)


resize_pic = cv2.resize(a,(4,4))
print(resize_pic)

 

 

你可能感兴趣的:(cv2.resize()几个坑)