| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import cv2
- import os
- import sys
- sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
- from default_config import *
- visualization = True
- CHESS_BOARD_DIM = (9, 6)
- criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
- # nếu tồn tại thư mục ảnh, xóa đi và tạo lại
- image_dir_path = f"camera_calibration/images/{set_resolution}"
- if os.path.exists(image_dir_path):
- import shutil
- shutil.rmtree(image_dir_path)
- os.makedirs(image_dir_path)
- def detect_checker_board(image, grayImage, criteria, boardDimension):
- ret, corners = cv2.findChessboardCorners(grayImage, boardDimension)
- if ret == True:
- corners1 = cv2.cornerSubPix(grayImage, corners, (3, 3), (-1, -1), criteria)
- image = cv2.drawChessboardCorners(image, boardDimension, corners1, ret)
- return image, ret
- cap = cv2.VideoCapture(0)
- # Thay đổi độ phân giải phù hợp với yêu cầu ban đầu
- new_height = RESOLUTION_STANDARDS[set_resolution]
- new_width, new_height = change_resolution(cap,new_height)
- print(f'Resolution camera {new_width}x{new_height}')
- n = 0 # image_counter
- while True:
- _, frame = cap.read()
- copyFrame = frame.copy()
- gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
- image, board_detected = detect_checker_board(frame, gray, criteria, CHESS_BOARD_DIM)
- if visualization:
- cv2.putText(
- frame,
- f"saved_img : {n}",
- (30, 40),
- cv2.FONT_HERSHEY_PLAIN,
- 1.4,
- (0, 255, 0),
- 2,
- cv2.LINE_AA,
- )
- cv2.imshow("frame", frame)
- cv2.imshow("copyFrame", copyFrame)
- key = cv2.waitKey(1)
- if key == ord("q"):
- break
- if key == ord("s") and board_detected == True:
- # storing the checker board image
- cv2.imwrite(f"{image_dir_path}/image{n}.png", copyFrame)
- print(f"saved image number {n}")
- n += 1 # incrementing the image counter
- cap.release()
- cv2.destroyAllWindows()
- print("Total saved Images:", n)
|