想用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)