%%OpenCV 2.1からOpenCV 2.2に切り替えてみたら,エンターキーをcvWaitKeyで拾わなくなった気がするので,検証してみた.%%
OpenCV 2.3((厳密には[[リビジョン5523>https://code.ros.org/trac/opencv/changeset/5523]]))でbugfixされた

#contents

*前提 [#i29b885b]
-OpenCV 2.1 のビルドオプションはほぼデフォルト(( WITH_TBB だけ有効にしたけど,本件とは無関係だと思う))
-OpenCV 2.2 はWITH_QTでビルド.((こちらもWITH_TBBを有効にしたけど,多分無関係だと思う))
--Qtは4.7.0でビルド

*検証内容 [#ye36e340]
-OpenCVのcvWaitKey(C++インタフェースだとcv::waitKey)は押されたキーを拾って,int型のASCIIコードを返す.
-何も押されなかったら-1を返す.
-エンターキーは13に対応するのだが,Qtを有効にしたOpenCV 2.2でどう反応するか以下のコードでテスト

#geshi(c++, number){{
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
#include <iostream>

const char WINDOW_NAME[]	= "OpenCV";

int main(int argc, char **argv){
	cvNamedWindow(WINDOW_NAME);

	int q;
	while(q = cvWaitKey(0),q != 'q'){ // qが押されたら終了
		std::cout << ' ' << q ;
	}

	cvDestroyWindow(WINDOW_NAME);
	return 0;
}
}}

-これ以上ないほどシンプルなソースコード
-押されたキーのASCIIコードを返す

**検証結果(OpenCV 2.1) [#bcdc54cc]
-多数のキーの反応を返す
-ファンクションキー,矢印キー,InsertやHomeキーなどにも反応した.
-反応しなかったのはCtrl,Shift,Altなどの特殊キーばかり

**検証結果(OpenCV 2.2) [#a8600a93]
-Enterキーを押しても反応が無い
-Backspaceキーも反応が無い
-他のキーは反応がある
-2.1と比べて,以下のキーが確認できない
--Enter キー
--Backspace キー
--ファンクションキー
--Insert キー
--Page Up/Down キー
--End キー
--Home キー
--Delete キー


**検証結果(OpenCV 2.2 + CV_GUI_NORMAL) [#k03c6e6a]
-OpenCV 2.2には,Qtを有効にした場合,通常のウィンドウ(旧来のウィンドウ)を有効にするCV_GUI_NORMALというオプションが付く
-9行目を以下のように変更することで,従来のOpenCVのウィンドウを呼べる

#geshi(c++){{
 -cvNamedWindow(WINDOW_NAME);
 +cvNamedWindow(WINDOW_NAME,CV_WINDOW_AUTOSIZE|CV_WINDOW_KEEPRATIO|CV_GUI_NORMAL);
}}

-Qtのウィンドウの時と変わらず
-Qtのウィンドウを使う使わないに関わらず,ライブラリに問題があるっぽい.

**検証結果(OpenCV 2.2 C++インタフェース) [#ge96740e]
-上記のプログラムをC++インタフェースで書き換えてみた((もっとも,Cインタフェースの中身はほとんどがC++インタフェースのラッパーなので,当たり前と言えば当たり前((今回の関数たちを中までチェックしたわけではないが))))が,同様の結果に

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

*参考 [#p642ab49]
-[[OpenCVのバグ(trac)]]

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

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS