[英]cv2.waitKey(25) & 0xFF == ord('q'): and cv2.imwrite() not working
[英]How cv2.waitKey(1) & 0xff == ord('q') works?
這條線是如何工作的?
到目前為止,我知道所有所有int
數的cv2.waitKey(number)
的輸出都是-1
,而0xff
是一個十六進制數,等於十進制255
。
-1 & 0xff
等於255
(十進制數字)。
而且, ord('q')
等於113
。
但是現在,我不知道為什么255 == 113
?
cv2.waitKey(1)
返回當前按下的鍵的字符代碼,如果未按下任何鍵,則返回-1。 & 0xFF
是二進制AND操作,以確保僅保留鍵的單字節(ASCII)表示,對於某些操作系統, cv2.waitKey(1)
將返回不是單字節的代碼。 ord('q')
始終返回ord('q')
的ASCII表示形式,為113(十六進制為0x71)。
因此,如果在評估cv2.waitKey(1)
時用戶按下q鍵,將確定以下內容:
cv2.waitKey(1) & 0xFF == cv2.ord('q')
0xXX71 & 0xFF == 0x71
0x71 == 0x71
True
我剛剛完成了一些OpenCV代碼,而cv2.waitKey(1)和0xff == ord('q')是我多次戲弄的作品之一。
第一:
cv2.waitKey([delay])
函數waitKey無限期地等待鍵事件,並且延遲以毫秒為單位。 waitKey(0)表示永遠。
第二:
ord()方法返回一個整數,該整數表示給定Unicode字符的Unicode代碼點。 在您的代碼中,您希望用戶選擇字母“ q”,該字母被轉換為Unicode值“ 113”。
第三:
0xFF是十六進制常量,二進制值為11111111。 它用於屏蔽序列的最后8位,並且任何鍵盤字符的ord()都不得大於255。
這是我正在使用的代碼,它不使用ord()或&0xff 。
def display_facial_prediction_results(image):
# Display image with bounding rectangles
# and title in a window. The window
# automatically fits to the image size.
cv2.imshow('Facial Prediction', image)
while (True):
# Displays the window infinitely
key = cv2.waitKey(0)
# Shuts down the display window and terminates
# the Python process when a specific key is
# pressed on the window.
# 27 is the esc key
# 113 is the letter 'q'
if key == 27 or key == 113:
break
cv2.destroyAllWindows()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.