yolo3で一括画像検出を行い、画像を保存したい
コードを編集したが、
ファイル内の画像をループしてしまい、1度検出した画像も再度検出されてしまう。
どのようにすればよいでしょうか。
また、保存画像には
検出結果の枠が消えた状態で保存されている。
枠組み付きで保存するにはどうすればよいか。
以下が追加したコードです。
python
1files = glob.glob('C:/Users/****/keras-yolo3/imageimage/*.jpg') 2 for f in files: 3 img = Image.open(f) 4 try: 5 title, ext = os.path.splitext(f) 6 image = Image.open(f) 7 img.save(title+"_s"+ext) 8
yolo_video.pyの全体コードは以下の通りです。
python
1import sys 2import argparse 3import numpy as np 4import os 5import glob 6 7from yolo import YOLO, detect_video 8from PIL import Image 9 10def detect_img(yolo): 11 while True: 12 files = glob.glob('C:/Users/****/keras-yolo3/imageimage/*.jpg') 13 for f in files: 14 img = Image.open(f) 15 try: 16 title, ext = os.path.splitext(f) 17 image = Image.open(f) 18 img.save(title+"_s"+ext) 19 20 except: 21 print('Open Error! Try again!') 22 continue 23 else: 24 r_image = yolo.detect_image(image) 25 26 27 yolo.close_session() 28 29FLAGS = None 30 31if __name__ == '__main__': 32 # class YOLO defines the default value, so suppress any default here 33 parser = argparse.ArgumentParser(argument_default=argparse.SUPPRESS) 34 ''' 35 Command line options 36 ''' 37 parser.add_argument( 38 '--model', type=str, 39 help='path to model weight file, default ' + YOLO.get_defaults("model_path") 40 ) 41 42 parser.add_argument( 43 '--anchors', type=str, 44 help='path to anchor definitions, default ' + YOLO.get_defaults("anchors_path") 45 ) 46 47 parser.add_argument( 48 '--classes', type=str, 49 help='path to class definitions, default ' + YOLO.get_defaults("classes_path") 50 ) 51 52 parser.add_argument( 53 '--gpu_num', type=int, 54 help='Number of GPU to use, default ' + str(YOLO.get_defaults("gpu_num")) 55 ) 56 57 parser.add_argument( 58 '--image', default=False, action="store_true", 59 help='Image detection mode, will ignore all positional arguments' 60 ) 61 ''' 62 Command line positional arguments -- for video detection mode 63 ''' 64 parser.add_argument( 65 "--input", nargs='?', type=str,required=False,default='./path2your_video', 66 help = "Video input path" 67 ) 68 69 parser.add_argument( 70 "--output", nargs='?', type=str, default="", 71 help = "[Optional] Video output path" 72 ) 73 74 FLAGS = parser.parse_args() 75 76 if FLAGS.image: 77 """ 78 Image detection mode, disregard any remaining command line arguments 79 """ 80 print("Image detection mode") 81 if "input" in FLAGS: 82 print(" Ignoring remaining command line arguments: " + FLAGS.input + "," + FLAGS.output) 83 detect_img(YOLO(**vars(FLAGS))) 84 elif "input" in FLAGS: 85 detect_video(YOLO(**vars(FLAGS)), FLAGS.input, FLAGS.output) 86 else: 87 print("Must specify at least video_input_path. See usage with --help.") 88 89
あなたの回答
tips
プレビュー