您好,登錄后才能下訂單哦!
遇到這么個(gè)需求:把圖片按照定義的patchsize切塊,然后按照z軸順序疊放小塊,如下圖(僅考慮灰度圖像)
圖片im,設(shè)size為(h,w),patchsize為(ph,pw),則處理后大?。楹喕枋?,假設(shè)可以整除)為(ph,pw,w*h/ph/pw)。
為簡化描述,后面用h=300,w=300,ph=100,pw=100 為例,即處理后d=9。
numpy.reshape 的文檔:點(diǎn)擊打開鏈接
特別注意第三個(gè)參數(shù) order,其默認(rèn)取值為 order=‘C',表示最后一個(gè)維度的元素在reshape時(shí)優(yōu)先重排位置。而order=‘F'時(shí)則相反,第一個(gè)維度的元素優(yōu)先重排位置。
例子如下,得到的im2就是這么一個(gè)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 對圖像進(jìn)行切割的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。