opencv-resize函数使用

最近在复习opencv,计算机视觉以及神经网络的一些知识,记录一下自己遇到的问题吧。

resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None)

官方文档里面是这么定义的六个参数分别表示:输入图像,修改尺寸,输出图像,x方向缩放系数,Y 方向缩放系数,插值方式

需要注意的是只有在dsize取0的时候才会使用到fx和fy

举个例子

img = cv.imread("2.png")
print(img.shape)

输出(642, 1451, 3)

img = cv.resize(img,dsize=(640,640),fx=0.5,fy=0.5)

输出(640, 640, 3)

就是说如果dsize不是0的话,及时定义了fx,fy也只会按照dsize的大小进行更改

img = cv.resize(img,dsize=None,fx=0.5,fy=0.5)

输出(321, 726, 3),图像缩小为原来的一半

另外值得注意的一点是,原始图像的尺寸是按照(h,w,3)高乘宽格式的,但是dsize的参数是(w,h)宽乘高格式的,使用时需要注意

例如:dsize是(480,640)

img = cv.resize(img,dsize=(480,640),fx=0.5,fy=0.5)

输出结果却是(640, 480, 3)

最后是几种插值方式:

 

img = cv.resize(img,dsize=None,fx=6,fy=6,interpolation=None)
# img = cv.resize(img,dsize=None,fx=6,fy=6,interpolation=cv.INTER_NEAREST) #最近邻插值
# img = cv.resize(img,dsize=None,fx=6,fy=6,interpolation=cv.INTER_LINEAR) # 双线性插值,默认
# img = cv.resize(img,dsize=None,fx=6,fy=6,interpolation=cv.INTER_AREA) #使用像素区域关系进行重采样
# img = cv.resize(img,dsize=None,fx=6,fy=6,interpolation=cv.INTER_CUBIC) # 4x4像素邻域的双3次插值
# img = cv.resize(img,dsize=None,fx=6,fy=6,interpolation=cv.INTER_LANCZOS4) # 8x8像素邻域的Lanczos插值

 

posted @   陈宋春  阅读(1273)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示