2017-07-29 56 views
2

因此,我使用OpenCV 3.1.0將800 x 600圖像垂直切割成兩個尺寸相同的圖像。這意味着在剪輯結束時,我應該有兩張400 x 600的圖像,並存儲在它們自己的PIL變量中。如何將圖像垂直切割成兩個相同尺寸的圖像

這裏有一個例證:

Paper being cut into halves

謝謝。

編輯:我想要最有效的解決方案,所以如果解決方案是使用numpy拼接或類似的東西,然後去它。

+3

好圖!!! –

回答

3

您可以嘗試下面的代碼,它將創建兩個可以輕鬆顯示或寫入新文件的numpy.ndarray實例。

from scipy import misc 

# Read the image 
img = misc.imread("face.png") 
height, width, _ = img.shape 

# Cut the image in half 
width_cutoff = width // 2 
s1 = img[:, :width_cutoff, :] 
s2 = img[:, width_cutoff:, :] 

# Save each half 
misc.imsave("face1.png", s1) 
misc.imsave("face2.png", s2) 

face.png文件是一個示例,需要用您自己的圖像文件替換。

+0

感謝您的回答。我唯一擺脫的是第三行變量/ index:'height,width,_ = img.shape','s1 = img [:,:width_cutoff,:]'和's2 = img [:, width_cutoff :,::'由於圖像是2D的,程序給了我一個錯誤,直到我刪除它們。 – Halp

+0

我也嘗試過使用'width = len(img [0])'來查看是否會發現寬度更快,以防萬一,但numpy佔上風。 Timeit Times: Numpy拼接:'0.18052252247208658' len():'0.2773668664358264' – Halp