看板 Python 關於我們 聯絡資訊
目前需要大批的原始影像 ( 1024 * 1024 * 3 ) 做裁剪 裁剪的大小為 128*128*3,意思就是每一張原始影像會被平均裁切成64張影像 原本利用numpy加上for loop 發現速度實在太慢 想法 : 用矩陣索引的方式去抓出我要的影像範圍, 例如 -> 0:128, 128:256, 256,384 ..... 896:1024 img_width = 1024 crop_size = 128 CropNumb = int( img_width / crop_size) for i in range(CropNumb): for j in range(CropNumb): cropImg = Img[i*size:(i+1)*size, j*size:(j+1)*size, :] ... ... 跑程式的速度真的要很久,尤其當原始影像數目龐大的時候,我想是否有更好的解法處理crop的問題 目前只有想到先創一個 temp , 例如 -> temp = [ [0,128] , [128, 256] .... [896,1024] ] 然後讀入影像後用一個for loop 加上 64行利用 temp 當 ndarray 索引去抓影像範圍 例如: c1 = Img[temp[0][0]:temp[0][1], temp[0][0]:temp[0][1], :] c2 = Img[temp[0][0]:temp[0][1], temp[1][0]:temp[1][1], :] c3 = Img[temp[0][0]:temp[0][1], temp[2][0]:temp[2][1], :] c4 = Img[temp[0][0]:temp[0][1], temp[3][0]:temp[3][1], :] .... 以此類推 c64 這個方法可能會讓記憶體生出64個空間放這些矩陣,應該是利用空間換取時間的策略,很像是在做優化的問題 想請問版上朋友們對這類問題有甚麼建議的? -- Sent from my Windows -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.236.63.117 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1546971107.A.852.html
germun: skimage view_as_blocks 01/09 07:35
qwe85158: 感謝~ 01/09 20:35