簡體   English   中英

cv2.waitKey(1)和0xff == ord('q')如何工作?

[英]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.

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