zoukankan      html  css  js  c++  java
  • OpenCV 相机标定 findChessboardCorners() 与 cornerSubPix() 函数

    OpenCV 官方文档

    
    

    findChessboardCorners():Finds the positions of internal corners of the chessboard.

    bool cv::findChessboardCorners( InputArray     image,
                         Size        patternSize,
                       OutputArray    corners,
                         int         flags = CALIB_CB_ADAPTIVE_THRESH+CALIB_CB_NORMALIZE_IMAGE 
                       )        
    Python:
    retval, corners  =  cv.findChessboardCorners(image, patternSize[, corners[, flags]])

    Parameters
    image Source chessboard view. It must be an 8-bit grayscale or color image.
    patternSize    Number of inner corners per a chessboard row and column ( patternSize = cvSize(points_per_row,points_per_colum) = cvSize(columns,rows)).
    corners Output array of detected corners.
    flags Various operation flags that can be zero or a combination of the following values:
    • CALIB_CB_ADAPTIVE_THRESH Use adaptive thresholding to convert the image to black and white, rather than a fixed threshold level (computed from the average image brightness).
    • CALIB_CB_NORMALIZE_IMAGE Normalize the image gamma with equalizeHist before applying fixed or adaptive thresholding.
    • CALIB_CB_FILTER_QUADS Use additional criteria (like contour area, perimeter, square-like shape) to filter out false quads extracted at the contour retrieval stage.
    • CALIB_CB_FAST_CHECK Run a fast check on the image that looks for chessboard corners, and shortcut the call if none is found. This can drastically speed up the call in the degenerate condition when no chessboard is observed.

    The function attempts to determine whether the input image is a view of the chessboard pattern and locate the internal chessboard corners. The function returns a non-zero value if all of the corners are found and they are placed in a certain order (row by row, left to right in every row). Otherwise, if the function fails to find all the corners or reorder them, it returns 0. For example, a regular chessboard has 8 x 8 squares and 7 x 7 internal corners, that is, points where the black squares touch each other. The detected coordinates are approximate, and to determine their positions more accurately, the function calls cornerSubPix. You also may use the function cornerSubPix with different parameters if returned coordinates are not accurate enough.

    cornerSubPix():Refines the corner locations.

    Python: cv2.cornerSubPix(image, corners, winSize, zeroZone, criteria)

    Parameter:
    image  Input image
    corners        Initial coordinates of the input corners and refined coordinates provided for output
    winSize  Half of the side length of the search window. For example, if winSize=Size(5,5) , then a 5*2+1 x 5*2+1 = 11 x 11 search window is used.
    zeroZone Half of the size of the dead region in the middle of the search zone over which the summation in the formula below is not done. It is used sometimes to avoid possible singularities of the autocorrelation matrix. The value of (-1,-1) indicates that there is no such a size.
    criteria  Criteria for termination of the iterative process of corner refinement. That is, the process of corner position refinement stops either after criteria.maxCount iterations or when the corner position moves by less than criteria.epsilon on some iteration.
  • 相关阅读:
    【转载】stm32的GPIO八种工作模式
    常用数字滤波算法总结
    ST-LINK使用注意
    【转载】深入理解嵌入式开发
    【stm32中断优先级--珍藏版】
    对飞控的理解(一)
    【转载】c语言数据的左移右移
    四轴之第一炸
    linux下查看隐藏文件
    Jetson TK1 五:移植工控机程序到板上
  • 原文地址:https://www.cnblogs.com/dinghongkai/p/11211840.html
Copyright © 2011-2022 走看看