基于视觉抓取实验中对图片的预处理

在视觉抓取中,通常需要对图片进行预处理,现整理如下:

1. 如何将图片拉伸到需要的尺寸

先贴python 代码

import cv2
from scipy import ndimage

image = cv2.imread('test.jpg')
image2x = ndimage.zoom(image, zoom=[2, 2, 1], order=0)

cv2.imwrite('1x.jpg', image)
cv2.imwrite('2x.jpg', image2x)

图片test.jpg
原图

放在同级目录下,可得到
在这里插入图片描述
这里用到了scipy中的ndimage的zoom函数,可以知道

ndimage.zoom(image, zoom=[a, b, c], order=0)

a, b, c分别表示每个维度拉伸的维数的倍数

如果处理的是深度图片只有两个维度可以这么处理:

ndimage.zoom(depth_image, zoom=[2, 2], order=0)

对原理感兴趣的可以参看 https://blog.csdn.net/qq_34690929/article/details/79895938

2. 对图片进行填充

因为很多时候图片收入的大小并不是神经网络预期接受的大小,需要一定程度的扩充。另一种可能是,图片需要旋转。

import cv2
from scipy import ndimage

image = cv2.imread('test.jpg')
padding_width = int(image.shape[0] / 2)
pad_r = np.pad(image[:, :, 0], padding_width, 'constant', constant_values=0)
pad_g = np.pad(image[:, :, 1], padding_width, 'constant', constant_values=0)
pad_b = np.pad(image[:, :, 2], padding_width, 'constant', constant_values=0)
pad_r.shape = (pad_r.shape[0], pad_r.shape[1], 1)
pad_g.shape = (pad_g.shape[0], pad_g.shape[1], 1)
pad_b.shape = (pad_b.shape[0], pad_b.shape[1], 1)
image_padding = np.concatenate((pad_r, pad_g, pad_b), axis=2)

cv2.imwrite('origin.jpg', image)
cv2.imwrite('padding.jpg', image_padding)

原图

在这里插入图片描述
处理后
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值