I have some image input from the video/webcam. I want to write a video with a sequence of images.
if prob > 70 : # Violence prob
text_color = (0, 0, 255) # red
Here is the problem faced. If the Image got above the threshold value it should write it as a video with multiple frames.
i tried loop but it didn't works
what I am tried:
a = [1,2,3,4,5,6,7,8]
b = []
if a>=5:
b.append(a) =>
else:
print(normal)
loop over frames from the video file stream
while True:
# read the next frame from the file
(grabbed, frame) = vs.read()
# if the frame was not grabbed, then we have reached the end
# of the stream
if not grabbed:
break
# if the frame dimensions are empty, grab them
if W is None or H is None:
(H, W) = frame.shape[:2]
# clone the output frame, then convert it from BGR to RGB
# ordering, resize the frame to a fixed 224x224, and then
# perform mean subtraction
output = frame.copy()
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
frame = cv2.resize(frame, (224, 224)).astype("float32")
frame -= mean
# make predictions on the frame and then update the predictions
# queue
preds = model.predict(np.expand_dims(frame, axis=0))[0]
Q.append(preds)
# perform prediction averaging over the current history of
# previous predictions
results = np.array(Q).mean(axis=0)
# i = np.argmax(results)
i = 1
label = lb.classes_[i]
prob = results[i]*100
text_color = (0, 255, 0) # default : green
if prob > 70 : # Violence prob
text_color = (0, 0, 255) # red
else:
label = 'Normal'
text = "State : {:8} ({:3.2f}%)".format(label,prob)
FONT = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(output, text, (35, 50), FONT,1.25, text_color, 3)
# plot graph over background image
output = cv2.rectangle(output, (35, 80), (35+int(prob)*5,80+20), text_color,-1)
# check if the video writer is None
if writer is None:
# initialize our video writer
fourcc = cv2.VideoWriter_fourcc(*"MJPG")
writer = cv2.VideoWriter(args["output"], fourcc, 30,(W, H), True)
# write the output frame to disk
writer.write(output)
# show the output image
cv2.imshow("Output", output)
key = cv2.waitKey(1) & 0xFF
# if the `q` key was pressed, break from the loop
if key == ord("q"):
break
# release the file pointers
print("[INFO] cleaning up...")
writer.release()
vs.release()
How to resolve this issue. I want to write videos with multiple frames that got above threshold values.