advancedskrald/opencv_video.py

44 lines
1.3 KiB
Python

from datetime import datetime
import cv2
import runner
from util import FILE, RANK, PIECE, COLOR, imwrite, POSITION
cap = cv2.VideoCapture(0)
color = COLOR.BLACK
rank = RANK.EIGHT
pieces = {
PIECE.rook: [POSITION((FILE.A, rank)), POSITION((FILE.F, rank))],
PIECE.knight: [POSITION((FILE.E, rank)), POSITION((FILE.H, rank))],
PIECE.bishop: [POSITION((FILE.C, rank)), POSITION((FILE.D, rank))],
PIECE.queen: [POSITION((FILE.B, rank))],
PIECE.king: [POSITION((FILE.G, rank))],
}
while True:
# Capture frame-by-frame
ret, frame = cap.read()
# Display the resulting frame
cv2.imshow("frame", frame)
if cv2.waitKey(100) & 0xFF == ord("c"):
print(f"capturing frame")
imwrite(f"whole_boards/boards_for_empty/board_{datetime.utcnow().timestamp()}_.png", frame)
warped = runner.warp_board(frame)
runner.save_empty_fields(warped, skip_rank=rank)
for piece, positions in pieces.items():
for position in positions:
square = runner.get_square(warped, *position)
x, y = position
imwrite(f"training_images/{piece}/{position.color}_square/training_{x}{str(y)}_{datetime.utcnow().timestamp()}.png", square)
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()