物理の駅 Physics station by 現役研究者

テクノロジーは共有されてこそ栄える

OpenCV Pythonで画像の切り抜き (トリミング)

OpenCVでいうところのRectをやるには、配列の一部をスライスすればよい。

dst1 はY=164からHeight=2960、X=356からWidth=2028ピクセル分。XとYが逆になってることに注意。

import cv2
import glob
files = glob.glob("*.jpg")
i=0
for file in files:
    im = cv2.imread(file,0)
    dst1 = im[164:164+2960,356:356+2028]
    dst2 = im[164:164+2960,2692:2692+2028]

    cv2.imwrite(f'a/{i:02d}.jpg',dst1)
    i+=1
    cv2.imwrite(f'a/{i:02d}.jpg',dst2)
    i+=1

トリミング前にどこがトリミングされるか確認するためのコード

import cv2
import glob
files = glob.glob(r"*.jpg")
i=0
s1 = [821,100]
s2 = [2484,100]
width = 1700
height = int(width*2**0.5)
for file in files:
    im = cv2.imread(file,0)
    s=s1
    cv2.rectangle(im, (s[0], s[1]), (s[0]+width, s[1]+height), 120)
    s=s2
    cv2.rectangle(im, (s[0], s[1]), (s[0]+width, s[1]+height), 120)
    cv2.imwrite(file+"_rect.jpg",im)