#!/usr/bin/env python3
import numpy as np
import cv2 as cv
import glob
# Open camera
cap = cv.VideoCapture(0)
if not cap.isOpened():
print("Cannot open camera")
exit()
# termination criteria
criteria = (cv.TERM_CRITERIA_EPS + cv.TERM_CRITERIA_MAX_ITER, 30, 0.001)
# prepare object points, like (0,0,0), (1,0,0), (2,0,0) ....,(6,5,0)
objp = np.zeros((6*7,3), np.float32)
objp[:,:2] = np.mgrid[0:7,0:6].T.reshape(-1,2)
# Arrays to store object points and image points from all the images.
objpoints = [] # 3d point in real world space
imgpoints = [] # 2d points in image plane.
images = glob.glob('*.jpg')
while True:
# Capture frame-by-frame
ret, frame = cap.read()
# if frame is read correctly ret is True
if not ret:
print("Can't receive frame (stream end?). Exiting ...")
break
# Our operations on the frame come here
grey = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
# Find the chess board corners
ret, corners = cv.findChessboardCorners(grey, (7,6), None)
if ret == True:
objpoints.append(objp)
print( "Found corners", corners)
corners2 = cv.cornerSubPix(grey,corners, (11,11), (-1,-1), criteria)
imgpoints.append(corners)
# Draw and display the corners
cv.drawChessboardCorners(frame, (7,6), corners2, ret)
cv.imshow('frame', frame)
cv.waitKey(1500)
else:
print( "No image", corners)
cv.destroyAllWindows()