极智AI | OpenCV and torchvision.transforms 实现图像等比例缩放方法
Posted 极智视界
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了极智AI | OpenCV and torchvision.transforms 实现图像等比例缩放方法相关的知识,希望对你有一定的参考价值。
欢迎关注我的公众号 [极智视界],获取我的更多笔记分享
大家好,我是极智视界,本文介绍一下 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 实现图像等比例缩放的方法。希望我的分享能对你的学习有一点帮助。
扫描下方二维码即可关注我的微信公众号【极智视界】,获取我的更多经验分享,让我们用极致+极客的心态来迎接AI !
以上是关于极智AI | OpenCV and torchvision.transforms 实现图像等比例缩放方法的主要内容,如果未能解决你的问题,请参考以下文章