2017-07-29 85 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