From 164ad2f845c8757e8f229ca1c95e5a81a589bdf9 Mon Sep 17 00:00:00 2001 From: ros Date: Tue, 28 Feb 2023 11:50:49 +0100 Subject: [PATCH] Photo --- calib.py | 8 +++---- test2.py | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 test2.py diff --git a/calib.py b/calib.py index b9f7605..842245b 100644 --- a/calib.py +++ b/calib.py @@ -1,6 +1,4 @@ -import cv2 - -retval, corners = cv2.findChessboardCorners(image,patternSize, flags) +#retval, corners = cv2.findChessboardCorners(image,patternSize, flags) import cv2 import numpy as np @@ -18,8 +16,8 @@ image_points_array = [] # Load the images images = [] -images.append(cv2.imread("image1.jpg")) -images.append(cv2.imread("image2.jpg")) +images.append(cv2.imread("left.jpg")) +images.append(cv2.imread("right.jpg")) # Add more images as needed # Loop through each image and find the chessboard corners diff --git a/test2.py b/test2.py new file mode 100644 index 0000000..fbc4426 --- /dev/null +++ b/test2.py @@ -0,0 +1,71 @@ +import cv2 +import numpy as np +import os +import glob + +# Defining the dimensions of checkerboard +CHECKERBOARD = (16,22) +criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001) + +# Creating vector to store vectors of 3D points for each checkerboard image +objpoints = [] +# Creating vector to store vectors of 2D points for each checkerboard image +imgpoints = [] + + +# Defining the world coordinates for 3D points +objp = np.zeros((1, CHECKERBOARD[0] * CHECKERBOARD[1], 3), np.float32) +objp[0,:,:2] = np.mgrid[0:CHECKERBOARD[0], 0:CHECKERBOARD[1]].T.reshape(-1, 2) +prev_img_shape = None + + +h = 480 +w = 640 + +# Extracting path of individual image stored in a given directory +images = glob.glob('/home/ros/Bureau/ca_ur5/*.jpg') +for fname in images: + img = cv2.imread(fname) + h,w = img.shape[:2] + gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) + print(gray) + # Find the chess board corners + # If desired number of corners are found in the image then ret = true + ret, corners = cv2.findChessboardCorners(gray, CHECKERBOARD, cv2.CALIB_CB_ADAPTIVE_THRESH + cv2.CALIB_CB_FAST_CHECK + cv2.CALIB_CB_NORMALIZE_IMAGE) + """ + If desired number of corner are detected, + we refine the pixel coordinates and display + them on the images of checker board + """ + if ret == True: + objpoints.append(objp) + # refining pixel coordinates for given 2d points. + corners2 = cv2.cornerSubPix(gray, corners, (11,11),(-1,-1), criteria) + imgpoints.append(corners2) + + # Draw and display the corners + img = cv2.drawChessboardCorners(img,CHECKERBOARD,corners2,ret) + + cv2.imshow('img',img) + cv2.waitKey(0) + +cv2.destroyAllWindows() + +#h,w = img.shape[:2] + +""" +Performing camera calibration by +passing the value of known 3D points (objpoints) +and corresponding pixel coordinates of the +detected corners (imgpoints) +""" +ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, (w,h), None, None) + +print("Camera matrix : \n") +print(mtx) +print("dist : \n") +print(dist) +print("rvecs : \n") +print(rvecs) +print("tvecs : \n") +print(tvecs)