CV Chess

From BITPlan Wiki
Jump to navigation Jump to search

CV_Chess

Trying out the CV_Chess project from https://classes.engineering.wustl.edu/ese205/core/index.php?title=CV_Chess Fork of it at:

Installation

git clone  https://github.com/WolfgangFahl/ESE205-CVChess/
./installOpenCV
./install

Test

./test
============================= test session starts ==============================
platform linux -- Python 3.7.3, pytest-5.2.1, py-1.8.0, pluggy-0.13.0
rootdir: /home/wf/source/python/ESE205-CVChess
collected 2 items                                                              

test_camera.py .                                                         [ 50%]
test_webcam.py .                                                         [100%]

============================== 2 passed in 3.87s ===============================

Preview

# see https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_gui/py_video_display/py_video_display.html
import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()

    # Our operations on the frame come here
    #gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Display the resulting frame
    cv2.imshow('Camera',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

start the above code - stop by pressing 'q'

python3 preview.py

Chesspic2019-10-15 1627.png

Run

./run

CV ChessStep1.png CV ChessStep2.png CV ChessStep3.png CV ChessStep4.png CV ChessStep5.png CV ChessStep6.png CV ChessStep7.png CV Chess Identified.png

Project details

The project was an effort of some 200 hours See also https://classes.engineering.wustl.edu/ese205/core/index.php?title=CV_Chess_Logs

Code Structure

Click classes to view source code

Issues

see also https://github.com/rjgoodloe/ESE205-CVChess/issues

CV ChessDetection.png

  1. The board detection algorithm does not make sure that squares are really squares.
  2. The algorithm has a strict flow which you must follow