OpenCV 2.1からOpenCV 2.2に切り替えてみたら,エンターキーをcvWaitKeyで拾わなくなった気がするので,検証してみた. OpenCV 2.3*1でbugfixされた

前提

  • OpenCV 2.1 のビルドオプションはほぼデフォルト*2
  • OpenCV 2.2 はWITH_QTでビルド.*3
    • Qtは4.7.0でビルド

検証内容

  • OpenCVのcvWaitKey(C++インタフェースだとcv::waitKey)は押されたキーを拾って,int型のASCIIコードを返す.
  • 何も押されなかったら-1を返す.
  • エンターキーは13に対応するのだが,Qtを有効にしたOpenCV 2.2でどう反応するか以下のコードでテスト
  1. #include <cv.h>
  2. #include <cxcore.h>
  3. #include <highgui.h>
  4. #include <iostream>
  5.  
  6. const char WINDOW_NAME[] = "OpenCV";
  7.  
  8. int main(int argc, char **argv){
  9. cvNamedWindow(WINDOW_NAME);
  10.  
  11. int q;
  12. while(q = cvWaitKey(0),q != 'q'){ // qが押されたら終了
  13. std::cout << ' ' << q ;
  14. }
  15.  
  16. cvDestroyWindow(WINDOW_NAME);
  17. return 0;
  18. }
  • これ以上ないほどシンプルなソースコード
  • 押されたキーのASCIIコードを返す

検証結果(OpenCV 2.1)

  • 多数のキーの反応を返す
  • ファンクションキー,矢印キー,InsertやHomeキーなどにも反応した.
  • 反応しなかったのはCtrl,Shift,Altなどの特殊キーばかり

検証結果(OpenCV 2.2)

  • Enterキーを押しても反応が無い
  • Backspaceキーも反応が無い
  • 他のキーは反応がある
  • 2.1と比べて,以下のキーが確認できない
    • Enter キー
    • Backspace キー
    • ファンクションキー
    • Insert キー
    • Page Up/Down キー
    • End キー
    • Home キー
    • Delete キー

検証結果(OpenCV 2.2 + CV_GUI_NORMAL)

  • OpenCV 2.2には,Qtを有効にした場合,通常のウィンドウ(旧来のウィンドウ)を有効にするCV_GUI_NORMALというオプションが付く
  • 9行目を以下のように変更することで,従来のOpenCVのウィンドウを呼べる
 -cvNamedWindow(WINDOW_NAME);
 +cvNamedWindow(WINDOW_NAME,CV_WINDOW_AUTOSIZE|CV_WINDOW_KEEPRATIO|CV_GUI_NORMAL);
  • Qtのウィンドウの時と変わらず
  • Qtのウィンドウを使う使わないに関わらず,ライブラリに問題があるっぽい.

検証結果(OpenCV 2.2 C++インタフェース)

  • 上記のプログラムをC++インタフェースで書き換えてみた*4が,同様の結果に

まとめ

  • 鳴り物入りで登場したQtバックエンドであるが,まだまだBuggyな面があるっぽい.
  • おそらく,原因はWITH_QTを有効にしてOpenCVをビルドしたこと.
  • ソースコードを追えば原因があるかも知れないが,現状できる最短の解決策はOpenCV 2.1を使えということか.orz....
    • OpenCV 2.3で解決されたので,そちらを使うべし.もしくはOpenCV 2.2 でWITH_QTを無効にしてビルドする
  • っていうか,2.1で意外にキーを拾えたんだな.ファンクションキーも使えたんだ,知らなかった.

参考

ジャンル:OpenCV:OpenCV 2.1:OpenCV 2.2:OpenCV 2.3


*1 厳密にはリビジョン5523
*2 WITH_TBB だけ有効にしたけど,本件とは無関係だと思う
*3 こちらもWITH_TBBを有効にしたけど,多分無関係だと思う
*4 もっとも,Cインタフェースの中身はほとんどがC++インタフェースのラッパーなので,当たり前と言えば当たり前*5
*5 今回の関数たちを中までチェックしたわけではないが

添付ファイル: filecvWaitKey-2-2.png 262件 [詳細] filecvWaitKey-2-1.png 238件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-10-20 (木) 13:32:49 (2227d)