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插值
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人