极智AI | OpenCV and torchvision.transforms 实现图像等比例缩放方法

  一起养成写作习惯!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情

欢迎关注我的公众号 [极智视界],获取我的更多笔记分享

  大家好,我是极智视界,本文介绍一下 OpenCV 和 torchvision.transforms 库实现图像等比例缩放方法。

  图像缩放这个过程也即 resize,是 CV 预处理阶段不可或缺的步骤。resize 操作方法十分丰富,从 resize 插值算法来说一般有 最近邻双线性双三次基于像素区域关系兰索斯插值 等;从缩放方式来说一般有 不等比例缩放等比例缩放 之分。这里我们来看看等比例缩放的实现。

1 torchvision.transforms 库图像等比例缩放

  torchvision.transforms 库在深度学习模型预处理中应用广泛,这个时候一般就不用 opencv 去做一些预处理操作了,一般就用 torchvison.transforms.Compose 把 torchvison.transforms 中的一些图像处理方法包在一起形成整个模型的预处理模块。来介绍一下 torchvision.transforms 中图像等比例缩放的实现方式。

import torchvision.transforms as F
from PIL import Image

## 读图
sourceImg = Image.open(imgPath)

## torchvision.transforms 的等比例缩放
_resize = F.Resize(224, interpolation=F.InterpolationMode.BICUBIC)
resizeImg = _resize(sourceImg)

## 来看看 torchvision.transforms 的非等比例缩放,看看有啥区别
_resize = F.Resize((224, 224), interpolation=F.InterpolationMode.BICUBIC)
resizeImg = _resize(sourceImg)
复制代码

  可以看到 等比例缩放 和 非等比例缩放的实现差别比较小,只是一个是 224,一个是 (224, 224)。这里比较容易理解错误,说明一下,224 只是指定了第一个维度,第二个维度未指定,缩放时第二个维度就按第一个维度的缩放比例进行缩放,也就是等比例缩放;而 (224, 224) 既指定了第一个维度,也指定了第二个维度,也即固定了输出维度,这样就是非等比例缩放了(非常原图是个正方形)。

2 OpenCV 库图像等比例缩放

  opencv 就不多说了,应该是应用最为广泛的 CV 库了。

2.1 python 实现

import cv2

## 读图
sourceImg = cv2.imread(imgPath)

## opencv 的等比例缩放 ==> 多种方式
# 方式一:使用比例系数进行缩放
#         这里靠 fx 和 fy 进行调节
resizeImg = cv2.resize(sourceImg, (0, 0), fx = 0.5, fy = 0.5, interpolation=cv2.INTER_NEAREST)

# 方式二:使用等比例尺寸进行缩放
#        这里靠缩放尺寸进行调节
resizeImg = cv2.resize(sourceImg, (int(img_H / 0.5)), int(img_W / 0.5), interpolation=cv2.INTER_NEAREST)
复制代码

2.2 C++ 实现

/// 读图
cv::Mat sourceImg = cv::imread(imgPath);

/// opencv 的等比例缩放 -> 多种方式
// 方式一:使用比例系数进行缩放
//        这里靠 fx 和 fy 进行调节
cv::Mat resizeImg;
cv::resize(sourceImg, resizeImg, cv::Size(0, 0), 0.5, 0.5, cv::INTER_NEAREST);

// 方式二:使用等比例尺寸进行缩放
//        这里靠缩放尺寸进行调节
cv2.resize(sourceImg, resizeImg, (int(img_H / 0.5)), int(img_W / 0.5), cv::INTER_NEAREST)
复制代码

  好了,以上分享了 OpenCV 和 torchvision.transforms 实现图像等比例缩放的方法。希望我的分享能对你的学习有一点帮助。


logo_show.gif

猜你喜欢

转载自juejin.im/post/7107534952752742407