Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import cv2
- from yolo import Yolo
- import numpy as np
- colors = [255, 255, 255]
- target_class_id = 0
- net = Yolo()
- def delete_people(
- boxes_result_video,
- frame_number,
- human_id,
- frame,
- ):
- """
- """
- x, y, w, h = boxes_result_video[frame_number][human_id]
- frame[y-10:h+10, x-10:w+10] = median[y-10:h+10, x-10:w+10]
- return frame
- def nastroika(name_video):
- """
- """
- frame = 15 # Что за параметр ? почему 15
- video1 = cv2.VideoCapture(name_video)
- length = int(video1.get(cv2.CAP_PROP_FRAME_COUNT))
- frames = []
- while frame < length / 10:
- success, first_frame = video1.read() # не используемая success переменная ? зачем
- video1.set(cv2.CAP_PROP_POS_FRAMES, frame)
- gray = cv2.cvtColor(
- first_frame,
- cv2.IMREAD_COLOR
- )
- frames.append(gray)
- frame += 25 # что за 25 ? и почему 25 ?
- video1.release()
- median = np.median(frames, axis=0).astype(dtype=np.uint8)
- return median
- def draw(path_to_video, boxes_result_video):
- """
- """
- video = cv2.VideoCapture(path_to_video)
- success = True
- while success:
- success, frame = video.read()
- for i in boxes_result_video:
- for i1 in i:
- x, y, w, h = i[i1]
- cv2.ellipse(frame, (int(x + w/2), y + h), (int(h/10), int(w/1.2)), 90, 210, 510, 255)#Рисовка эллипсов
- cv2.imshow('', frame)
- cv2.waitKey(0)
- def detect(frame, target_class_id):
- """
- """
- # Для чего нужно вызывать метод в методе из метода ? почему нельзя сделать статическим метод и обращаться к нему ? зачем cтолько вызовов ?
- data, idxs, index = net.detect(frame, target_class_id)
- return data, idxs, index
- def media_analysis(media_path: str) -> list:
- """
- """
- video = cv2.VideoCapture(media_path)
- detection_data = []
- success = True
- while success:
- success, frame = video.read()
- temporary_array = {}
- bboxes, indices, idxs = detect(frame, target_class_id) # Для чего тут idxs? почему bboxes? bb
- for i in indices:
- # i = i[0]
- box = bboxes[i]
- x = round(box[0])
- y = round(box[1])
- w = round(box[2])
- h = round(box[3])
- temporary_array[i] = [x, y, w, h]
- detection_data.append(temporary_array)
- i = delete_people(
- detection_data,
- 0, 3,
- frame,
- ) # Что тут происходит ? он записывается в переменную i, а зачем ?
- return detection_data
- def image_analysis(media_path: str) -> list:
- """
- """
- detection_data = {}
- frame = cv2.imread(media_path, cv2.IMREAD_COLOR)
- bboxes, indices, _ = detect(frame, target_class_id)
- for index in indices:
- box = bboxes[index]
- detection_data[index] = [round(box[0]), round(box[1]), round(box[2]), round(box[3])]
- for index in detection_data:
- x1, y1, x2, y2 = detection_data[index]
- cv2.rectangle(frame, (x1, y1), (x1+x2, y1+y2), 255)
- cv2.ellipse(frame, (int(x1 + x2/2), y1 + y2), (int(y2/10), int(x2/1.2)), 90, 210, 510, 255)
- cv2.imshow('r.jpg', frame)
- cv2.waitKey(0)
- return detection_data
- path = 'j.jpeg'
- # median = nastroika(path)
- print(image_analysis(path))
- # 1) Объяснить как работает видео обработка, на статичной и не статичной камере
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement