|
|
from ultralytics import YOLO |
|
|
import cv2 as cv |
|
|
|
|
|
def process(): |
|
|
writer = None |
|
|
(W, H) = (None, None) |
|
|
path = "../videos/gun.mp4" |
|
|
model = YOLO("gunModel.pt") |
|
|
vs = cv.VideoCapture(path) |
|
|
while True: |
|
|
|
|
|
(grabbed, frame) = vs.read() |
|
|
if not grabbed: |
|
|
break |
|
|
results = model.predict(frame, stream=False) |
|
|
for result in results: |
|
|
for data in result.boxes.data.tolist(): |
|
|
draw_Box(data,frame," ") |
|
|
|
|
|
if writer is None: |
|
|
|
|
|
fourcc = cv.VideoWriter_fourcc(*"MJPG") |
|
|
writer = cv.VideoWriter("op3.mp4", fourcc, 24, |
|
|
(frame.shape[1], frame.shape[0]), True) |
|
|
print("writing") |
|
|
writer.write(frame) |
|
|
cv.imshow('image', frame) |
|
|
cv.waitKey(24) |
|
|
|
|
|
|
|
|
def draw_Box(data,image,name): |
|
|
x1,y1,x2,y2,_,_ = data |
|
|
p1 = (int(x1),int(y1)) |
|
|
p2 = (int(x2),int(y2)) |
|
|
cv.rectangle(image,p1,p2,(0,0,255),3) |
|
|
cv.putText(image, "gun", p1, cv.FONT_HERSHEY_SIMPLEX, 2, (0, 200, 255), |
|
|
9) |
|
|
|
|
|
process() |