質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

プログラムの中断ができない

python_begin22
python_begin22

総合スコア1

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0評価

1クリップ

235閲覧

投稿2022/06/09 05:33

編集2022/06/09 17:39

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))

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

can110

2022/06/09 05:50

どのような操作(キー入力)によってどのような動作をさせたいのかが明確でないように思います。 「~したら~したい」を具体的に記載ください。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。