如何使用OpenCV Python在棋盘图中找到模式?

如何使用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 为真。检测到的 corners 是(x,y)格式下的检测到的棋盘格角的坐标。

  • 使用 cv2.drawChessboardCorners() 在原始输入图像上绘制棋盘格角和模式。

  • 显示带有绘制好的棋盘图案的图像,

让我们看一些示例以更清楚地理解。

输入图像

我们将在下面的示例中使用此图像作为输入文件。

如何使用OpenCV Python在棋盘图中找到模式?

示例

在此Python程序中,我们找到输入图像中的模式。

#导入所需库
import cv2

#读取输入图像
img = cv2.imread('left01.jpg')

#将输入图像转换为灰度
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

#查找棋盘格的角落
ret, corners = cv2.findChessboardCorners(gray, (7,6),None)

#如果检测到棋盘格角
if ret == True:

   #绘制并显示角
   img = cv2.drawChessboardCorners(img, (7,6), corners,ret)
   cv2.imshow('棋盘格',img)
   cv2.waitKey(0)
cv2.destroyAllWindows()

当我们执行上述代码时,它将生成以下 输出 窗口 −

如何使用OpenCV Python在棋盘图中找到模式?

示例

在此Python程序中,我们将看到如何以不同的方式解决相同的问题。

# 导入所需的库
import cv2

# 读取输入图像
img = cv2.imread('left01.jpg')

# 将输入图像转换为灰度图像
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# 查找棋盘格角点
ret, corners = cv2.findChessboardCorners(gray, (7,6),None)

# 终止标准
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)

 # 画出并显示角点
 img = cv2.drawChessboardCorners(img, (7,6), corners,ret)
 cv2.imshow('Chessboard',img)
 cv2.waitKey(0)
cv2.destroyAllWindows()

执行后,将会产生以下输出 输出

如何使用OpenCV Python在棋盘图中找到模式?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Python OpenCV