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)

 

 

  • 12
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值