在python2.7中用numpy.reshape 对图像进行切割的方法

yipeiwu_com5年前Python基础

遇到这么个需求:把图片按照定义的patchsize切块,然后按照z轴顺序叠放小块,如下图(仅考虑灰度图像)

python2.7 numpy.reshape 对图像进行切割

图片im,设size为(h,w),patchsize为(ph,pw),则处理后大小(为简化描述,假设可以整除)为(ph,pw,w*h/ph/pw)。

为简化描述,后面用h=300,w=300,ph=100,pw=100 为例,即处理后d=9。

numpy.reshape 的文档:点击打开链接

特别注意第三个参数 order,其默认取值为 order=‘C',表示最后一个维度的元素在reshape时优先重排位置。而order=‘F'时则相反,第一个维度的元素优先重排位置。

例子如下,得到的im2就是这么一个tensor

import cv2
import numpy as np
 
im=cv2.imread('animal007.jpg',cv2.IMREAD_GRAYSCALE)
h= 300
w= 300
patchsize=100
d=h*w/patchsize/patchsize
print d
 
#crop the image to h x w
im=np.array(im[: h ,: w ])
 
#this gets wrong answer
im_wrong1=im.reshape((patchsize,patchsize,-1))
im_wrong7= im.reshape((patchsize,patchsize,-1),order='F')
im_wrong2=im.reshape(( h ,patchsize,-1)).reshape((patchsize,patchsize,-1))
im_wrong3=im.reshape((patchsize, w ,-1)).reshape((patchsize,patchsize,-1))
im_wrong4= im.reshape(( h ,patchsize,-1),order='F').reshape((patchsize,patchsize,-1))
im_wrong5= im.reshape(( h ,patchsize,-1),order='F').reshape((patchsize,patchsize,-1),order='F')
im_wrong6= im.reshape((patchsize, w ,-1),order='F').reshape((patchsize,patchsize,-1),order='F')
 
#this only works for h=w, i dont know why 
im2= im.reshape((patchsize, w ,-1),order='F').reshape((patchsize,patchsize,-1))
im2_0=im2[:,:,no]
cv2.imwrite('im2_0.jpg',im2_0)
 
no=4;
imw=im_wrong1[:,:,no]
cv2.imwrite('imw1_0.jpg',imw)
imw=im_wrong2[:,:,no]
cv2.imwrite('imw2_0.jpg',imw)
imw=im_wrong3[:,:,no]
cv2.imwrite('imw3_0.jpg',imw)
imw=im_wrong4[:,:,no]
cv2.imwrite('imw4_0.jpg',imw)
imw=im_wrong5[:,:,no]
cv2.imwrite('imw5_0.jpg',imw)
imw=im_wrong6[:,:,no]
cv2.imwrite('imw6_0.jpg',imw)
imw=im_wrong7[:,:,no]
cv2.imwrite('imw7_0.jpg',imw)
 

以上这篇在python2.7中用numpy.reshape 对图像进行切割的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

pycharm远程调试openstack代码

pycharm远程调试openstack代码

本文实例为大家分享了pycharm远程调试openstack的具体代码,供大家参考,具体内容如下 1.安装pycharm专业版 本文安装pycharm 2016.2.3专业版。网上教程较...

python3 与python2 异常处理的区别与联系

在python2.x中 ,异常是这样的处理的,异常基类后面加一个逗号“ ,”  然后跟着异常类型 import traceback try: 1/0 except E...

Python语言描述连续子数组的最大和

题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。...

在centos7中分布式部署pyspider

1.搭建环境: 系统版本:Linux centos-linux.shared 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2...

Python实现计算圆周率π的值到任意位的方法示例

Python实现计算圆周率π的值到任意位的方法示例

本文实例讲述了Python实现计算圆周率π的值到任意位的方法。分享给大家供大家参考,具体如下: 一、需求分析 输入想要计算到小数点后的位数,计算圆周率π的值。 二、算法:马青公式 π/...