web-dev-qa-db-ja.com

Python OpenCV CV2のimshow()ウィンドウを更新する方法

私の現在のプログラムはユーザーに画像を出力し、ユーザー入力に基づいて、必要に応じて画像を再調整します。

簡単に言うと、画像ファイルで円形のオブジェクトを見つけようとしています。ハフサークル変換を使用します。ただし、画像内の私の円の多くは「完全な円」ではないため、円の半径を「推測」するアルゴリズムを実行しています。ただし、必要に応じてユーザーが半径を再調整できるようにしたいと思います。

ユーザーに入力を求め、ユーザー入力に基づいて、imshow()でウィンドウを再調整する方法はありますか?現在、imshow()は、cv2.waitKey(0)を使用するまで実際のウィンドウを表示することを拒否します。使用する時点では、ウィンドウが破棄されるまでユーザー入力を要求できません。

7
Alwin Hui

imshowは、破棄せずに繰り返し呼び出すことができます。はい、おそらくwaitKeyが必要になります。0で呼び出さないでください。そうしないと、無期限に待機します。 1で呼び出すと、1ミリ秒待って、画像が再描画されることを確認します。次のようなものを試してください:

while True:
    cv2.imshow('image', img)
    cv2.waitKey(1)
    radius = input('Input radius')
    # recalculate image with new radius here...
14
101