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

 更新时间:2018年12月05日 11:09:19   作者:jdefla   我要评论

今天小编就为大家分享一篇在python2.7中用numpy.reshape 对图像进行切割的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

遇到这么个需求:把图片按照定义的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使用flask框架操作sqlite3的两种方式

    Python使用flask框架操作sqlite3的两种方式

    这篇文章主要介绍了Python使用flask框架操作sqlite3的两种方式,结合实例形式分析了Python基于flask框架操作sqlite3数据库的两种常用操作技巧,需要的朋友可以参考下
    2018-01-01
  • Python文件和目录操作详解

    Python文件和目录操作详解

    这篇文章主要介绍了Python文件和目录操作详解,本文讲解了文件的打开和创建、文件的读取、文件的写入、内容查找替换等内容,需要的朋友可以参考下
    2015-02-02
  • Python生成8位随机字符串的方法分析

    Python生成8位随机字符串的方法分析

    这篇文章主要介绍了Python生成8位随机字符串的方法,结合实例形式对比分析了2种比较常用的随机字符串生成技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2017-12-12
  • 一个Python最简单的接口自动化框架

    一个Python最简单的接口自动化框架

    这篇文章主要为大家详细介绍了一个Python最简单的接口自动化框架,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • Python中的FTP通信模块ftplib的用法整理

    Python中的FTP通信模块ftplib的用法整理

    ftplib模块中拥有FTP类,可以做到FTP协议下的各种上传下载操作,以下就来看一下Python中的FTP通信模块ftplib的用法整理:
    2016-07-07
  • Python3.6.x中内置函数总结及讲解

    Python3.6.x中内置函数总结及讲解

    今天小编就为大家分享一篇关于Python3.6.x中内置函数总结及讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Python中的单继承与多继承实例分析

    Python中的单继承与多继承实例分析

    这篇文章主要介绍了Python中的单继承与多继承,结合实例详细分析了Python面向对象程序设计中单继承与多继承的概念、原理、实现方法及相关操作注意事项,需要的朋友可以参考下
    2018-05-05
  • Python实现将xml导入至excel

    Python实现将xml导入至excel

    本文给大家讲解的是使用Python的Testlink实现将实现将xml导入至excel表格中,方法非常的简单,另外附上其他小伙伴的方法,有需要的童鞋们可以参考下。
    2015-11-11
  • Python调用C语言开发的共享库方法实例

    Python调用C语言开发的共享库方法实例

    这篇文章主要介绍了Python调用C语言开发的共享库方法实例,本文同时给出了C语言和Python调用简单实例,需要的朋友可以参考下
    2015-03-03
  • Python字符串特性及常用字符串方法的简单笔记

    Python字符串特性及常用字符串方法的简单笔记

    这篇文章主要介绍了Python字符串特性及常见字符串方法的简单笔记,为一些Pyhton入门学习中的基础知识,需要的朋友可以参考下
    2016-01-01

最新评论