cv::waitKeyで無理やり矢印キーを使う
cv::waitKeyで矢印キーを使いたいがよくわからないそんなときに役立つ値を列挙
// 矢印キー const int CV_WAITKEY_CURSORKEY_TOP = 2490368; const int CV_WAITKEY_CURSORKEY_BOTTOM = 2621440; const int CV_WAITKEY_CURSORKEY_RIGHT = 2555904; const int CV_WAITKEY_CURSORKEY_LEFT = 2424832; // エンターキーとか const int CV_WAITKEY_ENTER = 13; const int CV_WAITKEY_ESC = 27; const int CV_WAITKEY_SPACE = 32; const int CV_WAITKEY_TAB = 9;
ほぼASCIIコード
そして、使い方
#include <opencv2/opencv.hpp> int main(int argc, char *argv[]) { const int CV_WAITKEY_CURSORKEY_TOP = 2490368; const int CV_WAITKEY_CURSORKEY_BOTTOM = 2621440; const int CV_WAITKEY_CURSORKEY_RIGHT = 2555904; const int CV_WAITKEY_CURSORKEY_LEFT = 2424832; const int CV_WAITKEY_ENTER = 13; const int CV_WAITKEY_ESC = 27; const int CV_WAITKEY_SPACE = 32; const int CV_WAITKEY_TAB = 9; cv::Mat image = cv::imread("image.jpg", 1); cmcv::imshowAndwaitkey("画像", image); int c = -1; while(true) { // 入力確認用 // if(c != -1) // std::cout << c << std::endl; switch(c){ case CV_WAITKEY_CURSORKEY_TOP: std::cout << "↑" << std::endl; break; case CV_WAITKEY_CURSORKEY_LEFT: std::cout << "←" << std::endl; break; case CV_WAITKEY_CURSORKEY_RIGHT: std::cout << "→" << std::endl; break; case CV_WAITKEY_CURSORKEY_BOTTOM: std::cout << "↓" << std::endl; break; default: break; } if(c == CV_WAITKEY_ENTER) break; if(c == CV_WAITKEY_ESC) break; c = cv::waitKey(30); } return 0; }
本家と衝突はしないがもっと別の名称使うべきだとは思ってる
もっと他の綺麗なやり方があるはずだけど調べるのが面倒
ただ、無入力のときに-1が変数cに入っていることを初めて知ったのである