如何使用OpenCV进行图像缩放?
# OpenCV 图像缩放 完整教程(Python 版,极简好懂) 核心函数:**`cv2.resize()`** ## 一、函数语法 ```python cv2.resize(src, dsize, fx, fy, interpolation) ``` - `src`:原始图像 - `dsize`:目标尺寸 `(宽度, 高度)` - `fx`:水平缩放比例 - `fy`:垂直缩放比例 - `interpolation`:插值算法(缩放画质) --- ## 二、方式1:指定固定宽高(精准缩放) ```python import cv2 img = cv2.imread("test.jpg") # 直接设置:宽400,高300 resized = cv2.resize(img, (400, 300)) cv2.imshow("origin", img) cv2.imshow("resize", resized) cv2.waitKey(0) cv2.destroyAllWindows() ``` --- ## 三、方式2:按比例缩放(推荐,不变形) ```python img = cv2.imread("test.jpg") # 宽高同时缩小为原来的 0.5 倍 resized = cv2.resize(img, None, fx=0.5, fy=0.5) # 放大1.5倍 # resized = cv2.resize(img, None, fx=1.5, fy=1.5) ``` > 填 `None` 代表不手动指定尺寸,只用比例 `fx/fy` --- ## 四、方式3:等比例缩放(保留原图比例,常用) ```python import cv2 img = cv2.imread("test.jpg") h, w = img.shape[:2] # 目标宽度 new_w = 500 # 计算等比例高度 scale = new_w / w new_h = int(h * scale) resized = cv2.resize(img, (new_w, new_h)) ``` --- ## 五、插值算法(控制缩放画质) ```python # 缩小图片推荐 cv2.INTER_AREA # 放大图片推荐 cv2.INTER_CUBIC cv2.INTER_LINEAR # 默认 ``` 示例: ```python resized = cv2.resize(img, (500,500), interpolation=cv2.INTER_AREA) ``` --- ## 六、关键知识点总结 1. OpenCV 尺寸顺序:**(宽, 高)**,和 `shape` 的 `(高,宽)` 相反 2. 缩小用 `INTER_AREA`,清晰无锯齿 3. 放大用 `INTER_CUBIC`,更平滑 4. 想不变形 → 一定要**等比例计算**

