File size: 1,062 Bytes
2f3b6c4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import cv2
import json
import argparse
from pathlib import Path


# get the image from arguments
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True, help="Path to the image")
args = vars(ap.parse_args())

# check if the image does exist
img_p = Path(args["image"])
assert img_p.exists(), "Image does not exist"

# Read the image
img = cv2.imread(args["image"])

# Select the ROI from the image
ROI = cv2.selectROI("Image", img, False, False)

# Append the ROI coordinates to the csv file
# header: filename, ori_width, ori_height, roi_x, roi_y, roi_width, roi_height
with open("roi.csv", "a") as f:
    # if no file exists, create a new one with the header
    if f.tell() == 0:
        f.write("filename,ori_width,ori_height,roi_x,roi_y,roi_width,roi_height\n")
    ori_w, ori_h = img.shape[1], img.shape[0]
    f.write(f"{img_p.name},{ori_w},{ori_h},{ROI[0]},{ROI[1]},{ROI[2]},{ROI[3]}\n")

# Display cropped image
cropped = img[ROI[1] : ROI[1] + ROI[3], ROI[0] : ROI[0] + ROI[2]]
cv2.imshow("Cropped Image", cropped)
cv2.waitKey(0)