如何使用OpenCV Python在棋盤中查詢圖案?


我們可以使用cv2.findChessboardCorners()在影像中找到棋盤角點,並使用cv2.drawChessboardCorners()繪製帶有圖案的棋盤角點。請檢視下面這兩種方法的語法:

ret, corners = cv2.findChessboardCorners(img, patterSize, None)
cv2.drawChessboardCorners(img, patternSize, corners,ret)

步驟

要查詢棋盤中的圖案,您可以使用以下步驟:

  • 匯入所需的庫。在以下所有示例中,所需的Python庫是OpenCV。請確保您已經安裝了它。

  • 使用cv2.imread()讀取棋盤的輸入影像,並使用cv2.cvtColor()將其轉換為灰度影像。

  • 使用cv2.findChessboardCorners()查詢棋盤影像中的棋盤角點。它返回兩個輸出引數retcorners。如果在影像中檢測到棋盤角點,則ret為True。corners是以(x,y)格式表示的檢測到的棋盤角點的座標。

  • 使用cv2.drawChessboardCorners()在原始輸入影像上繪製棋盤角點和圖案。

  • 顯示繪製了棋盤圖案的影像。

讓我們來看一些示例,以便更清楚地理解。

輸入影像

我們將在下面的示例中使用此影像作為輸入檔案。


示例

在這個Python程式中,我們查詢輸入影像中的圖案。

# import required libraries import cv2 # read input image img = cv2.imread('left01.jpg') # convert the input image to a grayscale gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # Find the chess board corners ret, corners = cv2.findChessboardCorners(gray, (7,6),None) # if chessboard corners are detected if ret == True: # Draw and display the corners img = cv2.drawChessboardCorners(img, (7,6), corners,ret) cv2.imshow('Chessboard',img) cv2.waitKey(0) cv2.destroyAllWindows()

執行上述程式碼後,將生成以下輸出視窗:


示例

在這個Python程式中,我們將看到如何以不同的方式解決相同的問題:

# import required libraries import cv2 # read input image img = cv2.imread('left01.jpg') # convert the input image to a grayscale gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # Find the chess board corners ret, corners = cv2.findChessboardCorners(gray, (7,6),None) # terminating criteria criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001) if ret == True: corners2 = cv2.cornerSubPix(gray,corners,(11,11),(-1,-1),criteria) # Draw and display the corners img = cv2.drawChessboardCorners(img, (7,6), corners,ret) cv2.imshow('Chessboard',img) cv2.waitKey(0) cv2.destroyAllWindows()

執行後,將生成以下輸出


更新於:2022年12月5日

8K+ 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始
廣告