1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

opencv-pythonで右クリックイベント取得が上手く行かない

Last updated at Posted at 2019-11-20

内容

タイトル通りです. opencv-pythonでマウスイベントを取得していたところ, 右クリックのイベント取得をしようとするとdefaultの機能でmenuが開かれてしまいました.
調べた所なにもしないでも上手くいっている方もいるのでopencvのバージョンが原因かもしれません.

  • 環境
    Ubuntu 18.04 LTS
    opencvはpipでinstall(多分これが原因)
  • 日時
    2019/11/20

解決法

opencv 2.2 documentation » ユーザインタフェース
stackoverflow/Why does a right click open a drop down menu in my OpenCV imshow() window?

によると, 右クリックでmenuが開くのはどうやらこのQtバックエンドによる機能のようです.
なので, この機能をなくすか他のバックエンドにする必要があるみたいです.
バックエンド云々はよくわからないのと, この機能は必要ないのでこの機能をなくします.

[先の公式documentから]

  • flags ウィンドウのフラグ.現在サポートされるフラグは以下のとおりです:
    • CV_WINDOW_NORMAL or CV_WINDOW_AUTOSIZE: CV_WINDOW_NORMAL を指定すると,ユーザがウィンドウサイズを変更できるようになります.逆に CV_WINDOW_AUTOSIZE を指定すると,表示画像( ShowImage を参照してください)にフィットする様にウィンドウサイズが自動的に調整され,ユーザはウィンドウサイズを変更することができなくなります.
    • CV_WINDOW_FREERATIO or CV_WINDOW_KEEPRATIO: CV_WINDOW_FREERATIO を指定すると,アスペクト比を保たずに画像サイズが調整され,逆に CV_WINDOW_KEEPRATIO を指定すると,アスペクト比を保つように調整されます.
    • CV_GUI_NORMAL or CV_GUI_EXPANDED: CV_GUI_NORMAL を指定すると,ステータスバーとツールバーのない以前のウィンドウを表示することができます.逆に CV_GUI_EXPANDED を指定すると,機能強化された新しいGUIが表示されます.

どうやら, cv2.namedWindow の引数のflagsを指定すればできるようですね.

cv2.namedWindow("hoge", CV_GUI_NORMAL)
cv2.namedWindow("hoge", cv2.CV_GUI_NORMAL)
cv2.namedWindow("hoge", cv.CV_GUI_NORMAL)

どれもだめでした!!!

なんでだろう...

stackoverflow/NameError: global name 'CV_GUI_NORMAL' is not definedにこのような具体的な値が書いてあり, ...

WINDOW_AUTOSIZE = 1
WINDOW_FREERATIO = 256
WINDOW_FULLSCREEN = 1

WINDOW_GUI_EXPANDED = 0
WINDOW_GUI_NORMAL = 16

WINDOW_KEEPRATIO = 0
WINDOW_NORMAL = 0
WINDOW_OPENGL = 4096

WND_PROP_ASPECT_RATIO = 2

WND_PROP_AUTOSIZE = 1
WND_PROP_FULLSCREEN = 0
WND_PROP_OPENGL = 3
WND_PROP_VISIBLE = 4

WINDOW_GUI_NORMAL = 16 なので, ...

cv2.namedWindow("hoge", 16)

上手くいきました!!!

上記の数値はHigh-level GUIに詳しく書いてありますね.

1
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?