簡體   English   中英

opencv:無法通過waitKey讀取大寫字母

[英]opencv : Unable to read upper case letters through waitKey

我有一個簡單的開關盒,如下所示在無限循環中,根據用戶按下的鍵調用函數。 我正在使用 opencv 庫在 C++ 中編程。 下面使用的 waitKey 函數能夠讀取我在鍵盤上按下的小寫字母。 然而,我無法閱讀任何大寫字母,它仍然閱讀並將其解釋為相應的小寫字母。 在這方面的任何幫助表示贊賞。 我應該更新我的 opencv 庫嗎? 我在這篇文章的幫助下在 ubuntu 上安裝了 opencv

操作系統 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.
    }
}

我在 OpenCV 論壇上發現了一個與您的問題相關的小提示,因為您還沒有找到它: http : //answers.opencv.org/question/4266/cvwaitkey-upper-lowercase-difference/

我有同樣的問題(使用 opencv-4.x)。 我認為這是因為我使用 cmake 選項-D WITH_QT=ON (以啟用圖像的縮放滾動)編譯了 opencv。 但是 Qt 將 q 和 Q 解釋為相同的鍵碼(81); 唯一的事情是它添加了一個(移位)修飾符。

假設您在 C++/Qt 程序中收到一個QKeyEvent事件。 然后你按下時得到:

  • 'Q': event.key() = 81, event.modifiers().testFlag(Qt::KeyboardModifier::ShiftModifier) = true
  • 'q': event.key() = 81, event.modifiers().testFlag(Qt::KeyboardModifier::ShiftModifier) = false

似乎cv::waitKeycv::waitKeyEx ,當 opencv 使用 Qt 時,不讀取修飾符,只讀取關鍵代碼,不幸的是...

到目前為止,我發現的唯一選擇是使用-D WITH_QT=OFF重新編譯 然后我可以區分 Q 和 q(還有左箭頭和左移箭頭等等)。 但權衡是我不能再滾動圖像......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM