Python-OpenCV棋盘检测/相机标定
操作系统Windows
- 运行此代码需要预先安装好Python-OpenCV,Python版本为Python3.8
此代码功能为:
- 使用OpenCV调用摄像头
- 对摄像头拍摄到的每一帧图片进行张正友棋盘检测,并将检测到的棋盘绘制在图片上
- 对需要的图片按下键盘s键可以保存到电脑上
优点
import cv2 as cv
import numpy as np
cap = cv.VideoCapture(0,cv.CAP_DSHOW)
flag = cap.isOpened()
cap.set(3, 1280)
cap.set(4, 720)
chessboard_size = (15,13)
a = np.prod(chessboard_size)
objp = np.zeros((np.prod(chessboard_size), 3), dtype=np.float32)
objp[:, :2] = np.mgrid[0:chessboard_size[0], 0:chessboard_size[1]].T.reshape(-1, 2) * 18
criteria = (cv.TERM_CRITERIA_EPS + cv.TERM_CRITERIA_MAX_ITER, 3, 0.1)
obj_points = []
img_points = []
index = 0
while (flag):
ret1, frame = cap.read()
frame_save = frame.copy()
gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
ret2, corners = cv.findChessboardCorners(gray, chessboard_size, None)
if ret2 == True:
obj_points.append(objp)
corners2 = cv.cornerSubPix(gray, corners, (5, 5), (-1, -1), criteria)
img_points.append(corners2)
frame = cv.drawChessboardCorners(frame, chessboard_size, corners2, ret2)
cv.imshow("Capture_Paizhao", frame)
k = cv.waitKey(1) & 0xFF
if k == ord('s'):
cv.imwrite(r"F:\PyCharm\Camera_calibration_GIT\class1\0" + str(index) + ".jpg", frame_save)
print(cap.get(3))
print(cap.get(4))
print("save" + str(index) + ".jpg successfuly!")
print("-------------------------")
index += 1
elif k == ord('q'):
break
cap.release()
cv.destroyAllWindows()
文件下载链接