영상처리/Camera Calibration

checkerboard corner detector

난개발자 2022. 12. 1. 19:10
728x90

camera calibration의 첫 단계는 corner detection이다.

import cv2

image_stack = []
image_stack =image_stack+ [cv2.imread('test/20221125_210056.jpg')]
image_stack =image_stack+ [cv2.imread('test/20221125_210103.jpg')]
image_stack =image_stack+ [cv2.imread('test/20221125_210107.jpg')]


for image in image_stack:
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    ret, corners = cv2.findChessboardCorners(gray, (10, 7), None)

    ## termination criteria
    criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
    corners2 = cv2.cornerSubPix(gray,corners, (11,11),(-1,-1),criteria)
    # print(corners2)

    for dots in corners2:
        image=cv2.circle(image,(int(dots[0][0]),int(dots[0][1])),5,(0,0,255),-1)

    im_resized=cv2.resize(image,(1000,1000))
    cv2.imshow('im1_dot',im_resized)
    cv2.waitKey(0)

sample image들을 불러와서, 위와 같이 corner detection을 구현하였다. (opencv의 findChessboardCorners 함수)

다음엔 이를 통해 calibration을 해볼까 한다.

코너가 잘 감지된다. (printer의 토너가 부족해보인다..)
놓치는 경우도 있긴하다. scene을 잘 꾸미는게 중요하다.

728x90