OpenCV中cv2.resize宽高顺序与shape差异详解

月亮慢半拍
月亮慢半拍
发布时间:2026-10-14| 3人浏览过
原创

本文详解OpenCV中cv2.resize函数的使用细节。重点指出img.shape返回的高宽顺序与resize函数所需的(width, height)参数顺序相反,易导致错误。同时介绍插值方法如INTER_CUBIC及RGB与BGR通道差异对处理的影响,帮助开发者避免常见坑点。

OpenCV图像尺寸获取与resize函数基础

在OpenCV库中,获取图像尺寸信息的标准做法是直接访问图像对象的shape属性。


import cv2
img = cv2.imread(path)
img.shape

该属性返回一个包含三个元素的元组,格式为(高度, 宽度, 通道数)。例如,对于常见的彩色图像,第三个维度通常为3。当需要对图像进行缩放处理时,通常会调用cv2.resize()函数。

# 示例:将图像尺寸缩小至原来的一半

img = cv2.resize(img, (int(width / 2), int(height / 2)))

cv2.resize宽高参数顺序注意事项

这里有一个关键注意点:cv2.resize()函数接收的尺寸参数顺序是(宽度, 高度),这与img.shape返回的(高度, 宽度)顺序正好相反。这一点非常容易混淆,需要特别留意。

这种设计差异有时令人困惑,为什么shape和resize方法的参数顺序不统一?如果不注意这个细节,很容易在代码中引入难以排查的错误。

cv2.resize插值方法与颜色通道处理

补充说明:利用cv2.resize()调整图片尺寸的具体实践。

具体实现代码如下所示:


import cv2
import matplotlib.pyplot as plt 

image=plt.imread('timg.jpg')
res=cv2.resize(image,(224,224),interpolation=cv2.INTER_CUBIC)
plt.imshow(res)

在cv2.resize()函数中,第一个参数image代表需要改变大小的原始图像。

第二个参数(224, 224)指定了目标图像的尺寸。需要注意的是,OpenCV默认读取和处理的是BGR格式的图像,而上述代码中通过plt.imread读取的图片是RGB格式。因此在变换时,需留意颜色通道的对应关系,必要时进行转换以避免颜色显示异常。

第三个参数interpolation指定了插值算法,示例中选择了cv2.INTER_CUBIC(双三次插值)。OpenCV支持的其他常见插值方法还包括cv2.INTER_NEAREST(最近邻插值)、cv2.INTER_AREA(区域插值)等,可根据实际需求选择。

以上关于Python中OpenCV cv2.resize函数宽高顺序及shape差异的说明即为全部内容,希望能为读者提供有价值的参考。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。