python初心者です。
画像ファイルを目視し、key操作(1or2or3)でそれぞれclass1,class2,class3に振り分けるプログラムを考えています。
1or2or3以外のkey操作が行われたらそのまま画像表示させ、1or2or3が入力されたら次の画像を表示させたいと思っております。
フォルダの中のファイルがなくなったら、プログラムは終了しますが、途中で中断させようとしたときにCtrl+cを受け付けません。
途中でプログラムを終了させるためにCtrl+zで強制終了しなくてはいけなく、Ctrl+cでプログラムを中断させたいのです。
while Trueが悪さをしているように思いますが、elseのあとにbreakをしてしまうと1or2or3以外のキー操作がされたときでも画像が次のものになってしまいます。
まとめますと
・1or2or3以外のキー操作をされたら、画像表示を維持したい。
・プログラムの途中でCtrl +c を受け付け正常処理させたい。
python
import cv2 import os import glob import shutil sort1='/home/user/Desktop/code.test/class1' sort2='/home/user/Desktop/code.test/class2' sort3='/home/user/Desktop/code.test/class3' target_dir='/home/user/Desktop/code.test' #保存先ディレクトリがなかったら作成する if not os.path.exists(sort1): os.mkdir(sort1) if not os.path.exists(sort2): os.mkdir(sort2) if not os.path.exists(sort3): os.mkdir(sort3) filenames = os.listdir(target_dir) for file in filenames: multiple = 2 img = cv2.imread(target_dir+'/'+file) target_file=target_dir+'/'+file if img is None: print('through') else: height = img.shape[0] width = img.shape[1] img = cv2.resize(img , (int(width * multiple), int(height * multiple))) cv2.imshow("image", img) while True: key = cv2.waitKey() if key == 49: shutil.move(target_file,sort1) break elif key == 50: shutil.move(target_file,sort2) break elif key == 51: shutil.move(target_file,sort3) break #他のキーが入力されたらそのままにする else: print('pass', str(key))
まだ回答がついていません
会員登録して回答してみよう