2017-06-04 66 views
1

我使用: -如何從使用opencv和Python的用戶讀取「ctrl + q」輸入?

key=cv2.waitKey(1) #& 0xFF 
    if key== ord('q'): 
     .................... 

,但我需要從用戶輸入的是CTRL + Q

感謝

+0

openCV具有非常有限的用戶界面(更多用於測試而不是真正的應用程序代碼)。也許這是不可能的。 – Micka

+0

請閱讀[「我應該怎麼做當有人回答我的問題?」](http://stackoverflow.com/help/someone-answers)。 – thewaywewere

回答

0

@WalidAhmed,Ctrl + Anykey解釋爲單一鍵,如果你使用cv::waitKeyEx()。在示例中,

std::cout << cv::waitKey() << std::endl; 
std::cout << cv::waitKey() << std::endl; 

給出227, 113Ctrl代碼,q代碼)無論是在組合並且如果它們分別按壓。但

std::cout << cv::waitKeyEx() << std::endl; 
std::cout << cv::waitKeyEx() << std::endl; 

產生65507, 113時鍵結合的情況下,分別和65507, 262257按壓。

對不起,對於C++代碼,我希望你可以簡單地用Python重現它。請注意,這種方法是敏感的鍵盤的語言佈局(即我的英文和俄文Q鍵有Й字符在俄羅斯佈局,使263882代碼Ctrl + Й組合)。我也在Ubuntu中測試過它。所以對於不同的操作系統,代碼可能會有所不同。

1

CTRL + Q被編碼爲在ASCII control key table17。以下是一個示例代碼。

cv2.imshow('frame', frame) 
key = cv2.waitKey(1) 
if key == 17:  # Ctrl+Q or ^Q 
    break 
+0

@WalidAhmed你有沒有試過我的答案?它已經測試並能夠解決您的問題。 – thewaywewere