【计算机视觉】数据预处理

您所在的位置:网站首页 如何调整图片大小尺寸 【计算机视觉】数据预处理

【计算机视觉】数据预处理

2024-03-19 00:21| 来源: 网络整理| 查看: 265

问题

在做CNN的时候,大部分的神经网络模型要求输入的图片大小是固定的。但是由于数据来源的不同,大多数情况下会遇到数据集的图片大小不统一的问题。

比如下面这张图片的大小是333*500,现在要处理为256*256大小的图片。 在这里插入图片描述

import numpy as np from PIL import Image img_path = 'data/input/img/3771.jpg' image = Image.open(img_path) img = np.array(image) print(img.shape)

(333, 500, 3)

解决办法

常用的方法有三种。 crop和pad是两种传统的办法。spp net(Spatial Pyramid Pooling 空间金字塔池化)是一种新的解决方案。

安装文章相关的Python库 pip install Pillow numpy opencv-python crop

crop是一种常用的图片预处理方法。这个方法会改变原来的图像,截取主要的信息,忽略其他信息。 下面通过图片来理解这种方法。

width, high, channel = img.shape width_new, high_new = (256, 256) img_crop = img[width-width_new:, (high-256)//2:high-((high-256)//2),:] print(img_crop.shape)

(256, 256, 3)

在这里插入图片描述

使用的是numpy的二维数据切片。

pad

pad是一种填充方法,在图片的四周填充指定的值。这种方法不会改变原来的数据的形态,不会丢失图像的原始信息。

首先将图片的长和宽统一为max(width, hight)的大小。

# 计算长和宽的差值 dim_diff = np.abs(high - width) # 计算上下左右分别需要填充多少个维度 pad1, pad2 = dim_diff // 2, dim_diff - dim_diff // 2 pad = (0, 0, pad1, pad2) if high


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3