2012-02-07 49 views
0

的我需要一个式(逻辑)来划分在“N”数量相等的部分的固定区域。例如,我有一张800 * 800的照片/图像,所以现在我需要将它分成10个相同的部分以及切片部分的尺寸。你能帮我吗?将画面划分成N个相等的部分

回答

2

既然你不指定,他们需要是正方形,或施加比“十个等份”以外的任何其他限制,你为什么不只是切片图像分割成(对于示例)十倍80 * 800的图像(或800 * 80,如果你想在其他维度切片)?

这将会给十个相等大小的块,而不必担心是否具有最佳广场等等。如果用例只是切分成相等的部分(例如从网络传来的图像,其中十个小的请求可能比一个大的请求响应更快),这可以正常工作。

换句话说,是这样的:

def getSlice (sliceNumber, sliceCount, image): 
    xpos = 0 
    xsize = image.xsize 

    ypos = sliceNumber  * image.ysize/sliceCount 
    ypos2 = (sliceNumber + 1) * image.ysize/sliceCount 

    if sliceNumber < sliceCount - 1: 
     ysize = ypos2 - ypos1 
    else: 
     ysize = image.ysize - ypos1 - 1 

    return image.subImage (xpos, ypos, xsize, ysize) 

时用五片调用它,你会得到:

+-------------------------------------------+ 
|   getSlice (0, 5, image)   | 
+-------------------------------------------+ 
|   getSlice (1, 5, image)   | 
+-------------------------------------------+ 
|   getSlice (2, 5, image)   | 
+-------------------------------------------+ 
|   getSlice (3, 5, image)   | 
+-------------------------------------------+ 
|   getSlice (4, 5, image)   | 
+-------------------------------------------+ 

ypos/ypos2的东西,并在年底的if声明是为了满足分部可能无法给出完全对齐的数字的情况。他们应该保证你不会复制或错过图像中的任何行。

0

首先,你应该找到了N的所有这样的对k的,L中K * L = N。 K - 行数,l - 列数。
其次,你应该选择这些对你想要的。
之后,你应该剪切图像。

什么步骤使得一个问题吗?

如果你想要的,例如,最方形部分,检查全1从开方(N)的一个开始下降。获得你找到的第一个分隔线。因此,您可以合并步骤1和2.

相关问题