

opencvで画像を分割する際、１枚の画像を4つに分割して保存するには

[code]

    # -*- coding: utf-8 -*-
    import cv2
    
    def main():
    
        '''
        # 2点(x1,y1),(x2,y2)を通る矩形部分を切り抜き
        clp = img[x1:x2, y1:y2]
        # クリッピングした箇所を保存
        cv2.imwrite("img.png", clp)   
        '''
    
        img = cv2.imread("test.png")
        height, width, channels = img.shape
    
        clp = img[0:height/2, 0:width/2]
        cv2.imwrite("test-tl.png", clp)
    
        clp = img[0:height/2, width/2:width]
        cv2.imwrite("test-tr.png", clp)
    
        clp = img[height/2:height, 0:width/2]
        cv2.imwrite("test-ul.png", clp)
    
        clp = img[height/2:height, width/2:width]
        cv2.imwrite("test-ur.png", clp)
    
        if __name__ == '__main__':
            main()
    
[/code]

というコードで出来たのですが  
これを縦２つ、横３つに画像を分ける場合はどのようにコードを変えればいいのでしょうか。  
教えていただけると幸いです。


CC BY-SA 3.0
2017-01-03T11:01:28.637
31588
2017-04-18T14:53:58.080
2017-01-04T02:56:41.147
3054
20022
question
python opencv
OpenCV で画像を等分したい


縦と横それぞれでループする例です。

[code]

    #!/usr/bin/python3
    import cv2
    
    def main():
        img = cv2.imread("test.png")
        height, width, channels = img.shape
    
        height_split = 2
        width_split = 3
        new_img_height = int(height / height_split)
        new_img_width = int(width / width_split)
    
        for h in range(height_split):
            height_start = h * new_img_height
            height_end = height_start + new_img_height
    
            for w in range(width_split):
                width_start = w * new_img_width
                width_end = width_start + new_img_width
    
                file_name = "test_" + str(h) + "_" + str(w) + ".png"
                clp = img[height_start:height_end, width_start:width_end]
                cv2.imwrite(file_name, clp)
    
    
    if __name__ == '__main__':
        main()
    
[/code]


CC BY-SA 3.0
2017-01-04T02:50:58.817
31600
2017-01-04T02:50:58.817
3054
31588
answer