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

作者:jdefla 时间:2021-12-23 19:11:02 

遇到这么个需求:把图片按照定义的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)

来源:https://blog.csdn.net/u014722627/article/details/55259617

标签:python2.7,numpy,reshape
0
投稿

猜你喜欢

  • 在Python中COM口的调用方法

    2023-10-05 14:16:39
  • Vue提供的三种调试方式你知道吗

    2024-05-29 22:44:57
  • 怎么样用xmlhttp读取远程xml的数据

    2008-10-11 13:52:00
  • 关于Python 中IndexError:list assignment index out of range 错误解决

    2021-01-27 19:06:01
  • vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)

    2024-05-22 10:28:19
  • Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)

    2023-12-08 18:55:11
  • mysql 卡死 大部分线程长时间处于sending data的状态

    2024-01-23 06:43:48
  • 总结一些你可能不知道的ip地址

    2022-11-30 15:15:58
  • Java连接mysql数据库代码实例程序

    2024-01-22 03:01:26
  • Python开发工具Pycharm的安装以及使用步骤总结

    2022-09-15 08:21:01
  • python加密打包程序详解

    2021-03-02 02:02:46
  • Python中对元组和列表按条件进行排序的方法示例

    2021-04-21 22:21:22
  • python打印n位数“水仙花数”(实例代码)

    2021-06-11 20:35:36
  • M2实现Nodejs项目自动部署的方法步骤

    2024-05-13 10:05:21
  • 详解Python编程中time模块的使用

    2023-08-29 16:57:08
  • ASP.NET将Session保存到数据库中的方法

    2024-01-19 16:31:46
  • django请求返回不同的类型图片json,xml,html的实例

    2021-05-17 10:03:23
  • python使用原始套接字发送二层包(链路层帧)的方法

    2022-06-30 04:14:48
  • Python 写入训练日志文件并控制台输出解析

    2021-10-11 01:27:10
  • 从零开始学习Node.js系列教程二:文本提交与显示方法

    2024-05-08 09:35:30
  • asp之家 网络编程 m.aspxhome.com