Split

將圖像分割成多個部分

  • April 25, 2015

我有一張如下圖。它是 25792388 像素。讓我們假設它的左下角是 0,0。從該圖像中,我想創建多個圖像,如下所示並將它們保存在工作文件夾中。每個圖像的大小為 100100 像素。每個圖像將由其左下角座標保存。

  1. 第一個圖像的左下角為 0,0。右上角將在 100,100,圖像將保存為 0-0.jpg
  2. 第二張圖片的左下角為 10,0。右上角將在 110,100,圖像將保存為 10-0.jpg
  3. 完成最後一行後,Y座標將移動10。如果是第二行,第一張圖像將在0,10處,該圖像將保存為0-10.jpg

最快的方法是什麼?我更喜歡命令行方法。但首先,我可以使用任何類型的工具。

我知道在目前圖像的情況下,它將把它分成大約 257*238 個圖像。但是我有足夠的磁碟空間,我需要每個圖像來執行文本檢測。

在此處輸入圖像描述

這是可以執行您想要的操作的 shell 程式碼(bashksh或):zsh

image=clock.jpg

size=$( identify -ping -format "%wx%h" "${image}" )
x_upb=${size%x*}
y_upb=${size#*x}

x_inc=10
y_inc=10
x_tile=100
y_tile=100

for ((x=0; x<x_upb; x+=x_inc))
do
   for ((y=0; y<y_upb; y+=y_inc))
   do
       convert "${image}" -crop "${x_tile}x${y_tile}+${x}+${y}" "$x-$y.jpg"
   done
done

該程序convert來自 ImageMagick 程序套件。由於也可以從圖片文件中自動提取圖片大小,因此我也添加了該步驟。根據 don_crissti 的評論,我也建議identify為此目的使用(它也方便地來自 ImageMagick 程序套件)。您當然也可以在x_upb和中硬編碼圖片大小y_upb,還可以根據需要調整平舖大小和平鋪移位增量。我希望並認為程式碼是不言自明的。

注意:它當然需要一些調整;例如,圖塊可能不會超出上限(或者如果靠近邊界,您會得到更小的子圖片),因此如果您想要相等,則需要從上限中減去圖塊大小 -整個圖像的大小子圖像。

注意:據我所知,“幾何”被定義為具有從左上角(0,0)開始的方向。如果您想要其他方向,則需要自己進行數學運算以適應該介面定義。通常的程式碼模式是根據上界來處理相應的座標,例如,$((y_upb - y))y是變體部分,即(循環)變數。

引用自:https://unix.stackexchange.com/questions/198263