OpenCV Python – 如何使用滑鼠事件繪製矩形?


滑鼠事件有多種型別,例如左鍵或右鍵單擊、滑鼠移動、左鍵雙擊等。滑鼠事件返回滑鼠事件的座標(x,y)

當事件發生時執行操作,我們需要定義一個滑鼠回撥函式。我們使用cv2.EVENT_LBUTTONDOWNcv2.EVENT_MOUSEMOVEcv2.EVENT_LBUTTONUP滑鼠事件在影像上繪製矩形。

步驟

要使用滑鼠事件繪製矩形,請按照以下步驟操作:

  • 匯入所需的庫OpenCV。確保您已安裝它。

  • 建立一個黑色影像。我們在這個黑色影像上繪製矩形。我們還可以使用cv2.imread()方法讀取影像並在其上繪製矩形。

  • 定義一個滑鼠回撥函式'draw_rectangle'來在影像上繪製矩形。當滑鼠事件發生時,會執行滑鼠回撥函式。滑鼠事件會給出滑鼠事件的座標。要繪製矩形,我們需要影像上的至少兩個點。

  • 建立一個視窗'Rectangle Window'並將滑鼠回撥函式'draw_rectangle'繫結到此視窗。

  • 顯示影像視窗“Rectangle Window”。此視窗開啟我們在其上繪製圓形的影像。要關閉視窗,請按esc鍵。

讓我們看一些程式示例來清楚地理解它。

示例

在此示例中,我們使用滑鼠事件cv2.EVENT_LBUTTONDOWNcv2.EVENT_LBUTTONUP繪製矩形。

# import required libraries import cv2 import numpy as np drawing = False ix,iy = -1,-1 # define mouse callback function to draw circle def draw_rectangle(event, x, y, flags, param): global ix, iy, drawing, img if event == cv2.EVENT_LBUTTONDOWN: drawing = True ix = x iy = y elif event == cv2.EVENT_LBUTTONUP: drawing = False cv2.rectangle(img, (ix, iy),(x, y),(0, 255, 255),-1) # Create a black image img = np.zeros((512,700,3), np.uint8) # Create a window and bind the function to window cv2.namedWindow("Rectangle Window") # Connect the mouse button to our callback function cv2.setMouseCallback("Rectangle Window", draw_rectangle) # display the window while True: cv2.imshow("Rectangle Window", img) if cv2.waitKey(10) == 27: break cv2.destroyAllWindows()

當您執行上述 Python 程式碼時,它將開啟一個視窗,顯示一個黑色影像。我們可以透過拖動滑鼠在上面繪製矩形。繪製矩形的過程是首先按下滑鼠左鍵 (EVENT_LBUTTONDOWN) 並移動滑鼠 (EVENT_MOUSEMOVE),然後釋放按鈕 (EVENT_LBUTTONUP)。

在此示例中,直到釋放按鈕 (EVENT_LBUTTONUP) 才會繪製矩形。我們使用滑鼠事件繪製兩個矩形。請參閱以下螢幕截圖。


示例

在此 Python 示例中,我們使用三個滑鼠事件cv2.EVENT_LBUTTONDOWN、cv2.EVENT_MOUSEMOVEcv2.EVENT_LBUTTONUP繪製矩形。

# import required libraries import cv2 import numpy as np drawing = False ix,iy = -1,-1 # define mouse callback function to draw circle def draw_rectangle(event, x, y, flags, param): global ix, iy, drawing, img if event == cv2.EVENT_LBUTTONDOWN: drawing = True ix = x iy = y elif event == cv2.EVENT_MOUSEMOVE: if drawing == True: cv2.rectangle(img, (ix, iy), (x, y),(0, 0, 255),-1) elif event == cv2.EVENT_LBUTTONUP: drawing = False cv2.rectangle(img, (ix, iy), (x, y), (0, 0, 255), 2) # Create a black image img = np.zeros((512,700,3), np.uint8) # Create a window and bind the function to window cv2.namedWindow("Rectangle Window") # Connect the mouse button to our callback function cv2.setMouseCallback("Rectangle Window", draw_rectangle) # display the window while True: cv2.imshow("Rectangle Window", img) if cv2.waitKey(10) == 27: break cv2.destroyAllWindows()

當您執行上述 Python 程式碼時,它將開啟一個視窗,顯示一個黑色影像。繪製矩形的過程與示例 1 中討論的相同。在此示例中,在移動滑鼠 (EVENT_MOUSEMOVE) 時繪製矩形。當滑鼠左鍵釋放 (EVENT_LBUTTONUP) 時,繪製最終矩形。

我們使用滑鼠事件繪製矩形。請參閱以下螢幕截圖。


更新於: 2022年12月2日

6K+ 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告