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


Posted in Python onDecember 05, 2018

遇到这么个需求:把图片按照定义的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 相关文章推荐
实例讲解Python中的私有属性
Aug 21 Python
用Python进行TCP网络编程的教程
Apr 29 Python
python音频处理用到的操作的示例代码
Oct 27 Python
利用python3随机生成中文字符的实现方法
Nov 24 Python
Python subprocess模块详细解读
Jan 29 Python
python使用mysql的两种使用方式
Mar 07 Python
python getpass实现密文实例详解
Sep 24 Python
Python远程开发环境部署与调试过程图解
Dec 09 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
Apr 01 Python
解决Python数据可视化中文部分显示方块问题
May 16 Python
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
Jun 07 Python
OpenCV-Python实现人脸磨皮算法
Jun 07 Python
Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】
Dec 05 #Python
python3 实现对图片进行局部切割的方法
Dec 05 #Python
python中强大的format函数实例详解
Dec 05 #Python
python3+opencv3识别图片中的物体并截取的方法
Dec 05 #Python
解决Python3.5+OpenCV3.2读取图像的问题
Dec 05 #Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
Dec 05 #Python
对python opencv 添加文字 cv2.putText 的各参数介绍
Dec 05 #Python
You might like
Php中文件下载功能实现超详细流程分析
2012/06/13 PHP
深入PHP内存相关的功能特性详解
2013/06/08 PHP
PHP中使用curl伪造IP的简单方法
2015/08/07 PHP
PHP之十六个魔术方法详细介绍
2016/11/01 PHP
php+ajax简单实现全选删除的方法
2016/12/06 PHP
用javascript获取地址栏参数
2006/12/22 Javascript
背景音乐每次刷新都可以自动更换
2007/02/01 Javascript
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
JS分页效果示例
2013/10/11 Javascript
ie8本地图片上传预览示例代码
2014/01/12 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
JS实现复选框的全选和批量删除功能
2017/04/05 Javascript
AngularJs实现聊天列表实时刷新功能
2017/06/15 Javascript
浅谈Vue Element中Select下拉框选取值的问题
2018/03/01 Javascript
详解vue组件中使用路由方法
2019/02/12 Javascript
微信小程序实现的picker多级联动功能示例
2019/05/23 Javascript
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
js表达式与运算符简单操作示例
2020/02/15 Javascript
[48:54]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第二场 6.3
2018/06/04 DOTA
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
python使用三角迭代计算圆周率PI的方法
2015/03/20 Python
python中threading超线程用法实例分析
2015/05/16 Python
详解Python装饰器
2019/03/25 Python
python画图--输出指定像素点的颜色值方法
2019/07/03 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
2020/04/18 Python
Superdry极度乾燥官网:日本街头风格,纯英国制造品牌
2016/10/31 全球购物
酒店保洁主管岗位职责
2013/11/28 职场文书
给面试官的感谢信
2014/02/01 职场文书
会计试用期自我评价
2014/09/19 职场文书
北京故宫的导游词
2015/01/31 职场文书
教师工作表现自我评价
2015/03/05 职场文书
天那边观后感
2015/06/09 职场文书
开学典礼校长致辞
2015/07/29 职场文书
PHP 对接美团大众点评团购券(门票)的开发步骤
2021/04/03 PHP
css让页脚保持在底部位置的四种方案
2022/07/23 HTML / CSS