我在无限循环内有一个简单的开关盒,根据用户按下的键调用函数。我使用opencv库在C ++中编程。 下面使用的waitKey函数能够读取我在键盘上按下的小写字母。然而,我无法阅读任何大写字母,它仍然会读取并将其解释为相应的小写字母。 在这方面的任何帮助表示赞赏。我应该更新我的opencv库吗?我在this post
的帮助下在ubuntu上安装了opencvos UBUNTU 13.10 opencv版本2.4.8
伪代码
while(1)
{`
char k = waitKey(0);
switch(k) {
case 'a' : ... break;
case 'b' : ... break;
case 'A' : ... break; // UNABLE TO READ A here.
}
}
答案 0 :(得分:1)
我在OpenCV论坛上发现了一个与您的问题相关的小提示,但尚未找到它:http://answers.opencv.org/question/4266/cvwaitkey-upper-lowercase-difference/
答案 1 :(得分:0)
我有同样的问题(使用opencv-4.x)。
我认为这是由于我使用cmake选项-D WITH_QT=ON
编译了opencv(以对图像启用缩放滚动)。但是Qt将q和Q解释为相同的键码(81);唯一的事情是它添加了一个(shift)修饰符。
比方说,您在C ++ / Qt程序中收到一个QKeyEvent
事件。然后按一下即可得到
不幸的是,cv::waitKey
或cv::waitKeyEx
似乎在opencv使用Qt时不读取修饰符,仅读取键代码...
到目前为止,我发现的唯一选择是用-D WITH_QT=OFF
重新编译。然后,我可以区分Q和q(但也可以区分左箭头和Shifted左箭头等等)。但是要权衡的是我不能再滚动图像了……