import cv2 as cv import time # setting parameters CONFIDENCE_THRESHOLD = 0.5 NMS_THRESHOLD = 0.5 # colors for object detected COLORS = [(0, 255, 255), (255, 255, 0), (0, 255, 0), (255, 0, 0)] GREEN = (0, 255, 0) RED = (0, 0, 255) PINK = (147, 20, 255) ORANGE = (0, 69, 255) fonts = cv.FONT_HERSHEY_COMPLEX # reading class name from text file class_names = [] with open("classes.txt", "r") as f: class_names = [cname.strip() for cname in f.readlines()] # setttng up opencv net yoloNet = cv.dnn.readNet('yolov4-tiny.weights', 'yolov4-tiny.cfg') yoloNet.setPreferableBackend(cv.dnn.DNN_BACKEND_CUDA) yoloNet.setPreferableTarget(cv.dnn.DNN_TARGET_CUDA_FP16) model = cv.dnn_DetectionModel(yoloNet) model.setInputParams(size=(416, 416), scale=1/255, swapRB=True) # setting camera def ObjectDetector(image): classes, scores, boxes = model.detect( image, CONFIDENCE_THRESHOLD, NMS_THRESHOLD) for (classid, score, box) in zip(classes, scores, boxes): color = COLORS[int(classid) % len(COLORS)] label = "%s : %f" % (class_names[classid[0]], score) cv.rectangle(image, box, color, 2) cv.putText(frame, label, (box[0], box[1]-10), fonts, 0.5, color, 2) camera = cv.VideoCapture(0) counter = 0 capture = False number = 0 while True: ret, frame = camera.read() orignal = frame.copy() ObjectDetector(frame) cv.imshow('oringal', orignal) print(capture == True and counter < 10) if capture == True and counter < 10: counter += 1 cv.putText( frame, f"Capturing Img No: {number}", (30, 30), fonts, 0.6, PINK, 2) else: counter = 0 cv.imshow('frame', frame) key = cv.waitKey(1) if key == ord('c'): capture = True number += 1 cv.imwrite(f'ReferenceImages/image{number}.png', orignal) if key == ord('q'): break cv.destroyAllWindows()