yoloV3を改造して、物体検出を実際の用途に使用しようと考えております。
物体検出する際に、カメラや動画なりを読み込ませて検出することは、容易かと思いますが。
videocaptureで表示しているものに対して、指定した範囲のみの物体検出するためには、どこを弄ればよいのかピンときません。
要は、検出用に読み込んでいる画像のROIを指定してやりたいというところです。
用途例:画像のある範囲に車が来た時だけ検知するなど。
以上
よろしくお願いいたします。
Python
1 2ef detect_video(yolo, video_path, output_path=""): 3 import cv2 4 vid = cv2.VideoCapture(video_path) 5 if not vid.isOpened(): 6 raise IOError("Couldn't open webcam or video") 7 video_FourCC = int(vid.get(cv2.CAP_PROP_FOURCC)) 8 video_fps = vid.get(cv2.CAP_PROP_FPS) 9 video_size = (int(vid.get(cv2.CAP_PROP_FRAME_WIDTH)), 10 int(vid.get(cv2.CAP_PROP_FRAME_HEIGHT))) 11 isOutput = True if output_path != "" else False 12 if isOutput: 13 print("!!! TYPE:", type(output_path), type(video_FourCC), type(video_fps), type(video_size)) 14 out = cv2.VideoWriter(output_path, video_FourCC, video_fps, video_size) 15 accum_time = 0 16 curr_fps = 0 17 fps = "FPS: ??" 18 prev_time = timer() 19 while True: 20 return_value, frame = vid.read() 21 image = Image.fromarray(frame) 22 image = yolo.detect_image(image) 23 result = np.asarray(image) 24 curr_time = timer() 25 exec_time = curr_time - prev_time 26 prev_time = curr_time 27 accum_time = accum_time + exec_time 28 curr_fps = curr_fps + 1 29 if accum_time > 1: 30 accum_time = accum_time - 1 31 fps = "FPS: " + str(curr_fps) 32 curr_fps = 0 33 cv2.putText(result, text=fps, org=(3, 15), fontFace=cv2.FONT_HERSHEY_SIMPLEX, 34 fontScale=0.50, color=(255, 0, 0), thickness=2) 35 cv2.namedWindow("result", cv2.WINDOW_NORMAL) 36 cv2.imshow("result", result) 37 if isOutput: 38 out.write(result) 39 if cv2.waitKey(1) & 0xFF == ord('q'): 40 break 41 yolo.close_session() 42 43 44 45 46
回答1件
あなたの回答
tips
プレビュー