|
|
- import cv2
- import time
- import os
- import numpy as np
- import json
-
- vehicles = ["ambulance", "car1"]
- sides = [str(x) for x in range(0,361,30)]
- distances =["close_high","far_high","close_low","far_low"]
-
- def select_rect(im):
- rects=[]
- scale_percent = 100
- width = int(im.shape[1] * scale_percent / 100)
- height = int(im.shape[0] * scale_percent / 100)
- # Select ROI
- fromCenter = False
- r = cv2.selectROI(cv2.resize(im,(width,height)))
- # Crop image
- if(r == (0,0,0,0)):
- cv2.destroyAllWindows()
- imCrop = im[int(r[1]*100/scale_percent):int(r[1]*100/scale_percent+r[3]*100/scale_percent), int(r[0]*100/scale_percent):int(r[0]*100/scale_percent+r[2]*100/scale_percent)]
- # Display cropped image
- cv2.imshow("Image", imCrop)
- cv2.waitKey(0)
- cv2.destroyAllWindows()
- for i in r:
- rects.append(int(i)*int(100/scale_percent))
-
- print(rects)
- locs = {
- "x1": rects[0],
- "y1": rects[1],
- "x2": rects[0]+rects[2],
- "y2": rects[1]+rects[3],
- }
- return locs
-
- def take_image():
- cam_no = 0
-
- while 1:
- cam = cv2.VideoCapture(cam_no)
- if not (cam is None or not cam.isOpened()):
- break
- cam_no+=1
-
- for vehicle in vehicles:
- if vehicle == "ambulance":
- continue
- if not os.path.exists(vehicle):
- os.makedirs(vehicle)
- for distance in distances:
- for side in sides:
- for i in range(1,3):
- ret,img= cam.read()
- cv2.imwrite("{}/{}-{}({}).jpg".format(vehicle,distance,side,i),img)
- cv2.imshow("current",img)
- ex_c = [27, ord("q"), ord("Q")]
- if cv2.waitKey(1) & 0xFF in ex_c:
- break
- print("Took side {}:distance:{}, waiting 7 seconds".format(side,distance))
- time.sleep(7)
- print("Finished distance:"+distance)
- while not cv2.waitKey(1) & 0xFF in ex_c:
- ret,img= cam.read()
- cv2.imshow("current",img)
- print("Finished vehicle:"+vehicle)
- while not cv2.waitKey(1) & 0xFF in ex_c:
- ret,img= cam.read()
- cv2.imshow("current",img)
-
-
-
- def cut_image():
- cut_rects = {}
- for vehicle in vehicles:
-
- if not os.path.exists(vehicle):
- os.makedirs(vehicle)
- for distance in distances:
- for side in sides:
- img = cv2.imread("{}/{}-{}({}).jpg".format(vehicle,distance,side,1))
- cut_rects[vehicle + "-" + distance + "-" + side] = select_rect(img)
- cv2.destroyAllWindows()
-
- return cut_rects
-
- coordinates = cut_image()
- print(json.dumps(coordinates,indent=2))
- with open("coordinates.json","w") as file:
- file.write(json.dumps(coordinates,indent=2))
-
-
-
|