当前位置: 首页 > 编程笔记 >

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

谭文林
2023-03-14
本文向大家介绍在python2.7中用numpy.reshape 对图像进行切割的方法,包括了在python2.7中用numpy.reshape 对图像进行切割的方法的使用技巧和注意事项,需要的朋友参考一下

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

图片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 对图像进行切割的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 问题内容: 我已经尝试“剪切”图像一段时间了,我将解释原因和尝试之处。所以我想创建一个hp“ bar”,除了它不是一个bar,而是一个心,所以我要做的只是将两张图片相互画在上面,然后只剪一张就可以了。好像在hp中丢失了一样,但是我无法找到削减图像的方法。 设置高度只会调整图像的大小,您可能已经猜到了 我尝试使用textureRegion对其进行破解,但效果不佳 我发现了一种称为clip begin

  • 本文向大家介绍java实现上传图片进行切割的方法,包括了java实现上传图片进行切割的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java实现上传图片进行切割的方法。分享给大家供大家参考。具体分析如下: 为什么我要进行上传的图片进行切割呢,我这个项目的图片是部门logo,每个部门都可以选择不同的logo,但是要应对浏览器的兼容以及拉伸,我选择了把一张图片切成左、中、右和剩下的部分,

  • 我得到了一个图像,也得到了图像中区域的边界。例如,我有一个逻辑类型的掩码,边界的值为1,而对于其他像素,该值为0。我想对边界分割的区域进行标注,而我不确定如何基于连续边界对区域进行分割和标注。 边界看起来是这样的: 有了上面的图表,将会识别出四个区域。

  • 问题内容: 我正在开发一个使用tesseract OCR扫描图像中文本的android应用, 听说在对其执行OCR之前对图像进行二值化处理会产生更好的结果, 所以我开始寻找可以执行此操作的代码, 我发现很少,但实际上是在Java中,并且需要awt库…因此它们在android上不起作用。 所以你能帮我找到一个吗? 谢谢 问题答案: 一个简单的解决方案 在下文中,我仅根据正常的3维空间距离公式更改图像

  • 用于剪切、分割以及裁切对象的方法 Illustrator 提供了以下几种剪切、分割和裁切对象的方法: “分割下方对象”命令 就像是一把切刀或剪刀,它使用选定的对象切穿其他对象,而丢弃原来所选的对象。要使用此命令,请选择“对象”>“路径”>“分割下方对象”。请参阅使用“分割下方对象”命令剪切对象。 “在所选锚点处剪切路径”按钮 在锚点处剪切路径,一个锚点将变为两个锚点,其中一个锚点位于另一个锚点的正

  • 问题内容: 如何轻松地将NumPy数组中存储的多个灰度图像进行直方图均衡化? 我有这种4D格式的96x96像素NumPy数据: 问题答案: Moose指向此博客文章的评论相当不错。 为了完整起见,我在这里使用更好的变量名给出一个示例,并在问题中的4D数组中的1000张96x96图像上循环执行。它速度很快(在我的计算机上为1-2秒),只需要NumPy。