关于自动驾驶:学习笔记pythonOpencv-cv2findChessboardCorners-的基本使用

27次阅读

共计 1085 个字符,预计需要花费 3 分钟才能阅读完成。

cv2.findChessboardCorners()

该函数试图确定输出图片是否有棋盘图案,并定位棋盘板上的角点。
如果所有的角点被找到且以肯定的顺序排列,该函数会返回一个非零值。
而如果该函数没有找到所有的角点或者重新排列他们,则返回 0。

参数:

image:
    输出原始的棋盘板图像。该图像必须是一张 8 位的灰度图或色调图。patternSize:(w,h),
    棋盘上每一排和每一列的内角数。w= 棋盘板一行上黑白块的数量 -1,h= 棋盘板一列上黑白块的数量 -1,例如:10x6 的棋盘板,则(w,h)=(9,5)

corners:array,
    检测到的角点的输入数组。flags:int,
    不同的操作标记,可能为 0,None 或者下述值的组合:CALIB_CB_ADAPTIVE_THRESH:
        应用自适应阈值法把图像转换为黑白图,而不是应用一个固定的阈值。CALIB_CB_NORMALIZE_IMAGE:
        在利用固定阈值或自适应阈值法二值化图像之前,利用直方图均衡化图像。CALIB_CB_FILTER_QUADS:
        应用额定的规范 (如轮廓面积,周长,正方形形态) 来过滤掉在轮廓检索阶段提取的假四边形。CALIB_CB_FAST_CHECK:
        对图像运行一个疾速查看机制以查找棋盘板的角点,如果没有找到角点则返回一个快捷揭示。当没有察看到棋盘时,能够极大地放慢在进化条件下的调用。

实际:

试着对以下图片进行操作:

import numpy as np
import cv2
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

fname='calibration_test.png'

image=cv2.imread(fname)
# plt.imshow(image)
# plt.show()

gray=cv2.cvtColor(image,cv2.COLOR_RGB2GRAY)
plt.imshow(gray,cmap='gray')
plt.show()

# Find the chessboard corners
nx=8
ny=6
ret, corners = cv2.findChessboardCorners(gray, (nx, ny), None)

print('ret:',ret)
# print(len(corners))

# If found, draw corners
if ret == True:
    # Draw and display the corners
    cv2.drawChessboardCorners(image, (nx, ny), corners, ret)
    plt.imshow(image)


正文完
 0