{ "info": { "author": "Pierre Karashchuk", "author_email": "krchtchk@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Science/Research", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Image Recognition" ], "description": "# Checkerboard\n\n[![PyPI version](https://badge.fury.io/py/checkerboard.svg)](https://badge.fury.io/py/checkerboard)\n[![GitHub license](https://img.shields.io/github/license/lambdaloop/checkerboard.svg)](https://github.com/lambdaloop/checkerboard/blob/master/LICENSE)\n\nI could not find any libraries to find checkerboards robustly in Python, except for OpenCV.\nHowever, OpenCV's checkerboard tends to fail when the checkerboard is somewhat blurred or rotated.\n\nHence, this library was born. It may be slightly slower than OpenCV, but it will **find** that checkerboard.\n\nComparison of OpenCV vs this library (OpenCV on the left, checkerboard on the right):\n![comparison](https://thumbs.gfycat.com/HomelyAccurateBettong.webp)\n\n## Quickstart\n\nYou can install checkerboard easily through pip:\n```bash\npip install checkerboard\n```\n\nThen you can go ahead and detect checkerboards like so:\n```python\nfrom checkerboard import detect_checkerboard\n\nsize = (9, 6) # size of checkerboard\nimage = ... # obtain checkerboard\ncorners, score = detect_checkerboard(image, size)\n```\n\nThe `corners` returned are in the same format as the\n`findChessboardCorners` function from OpenCV, and are already computed\nto subpixel precision.\n\nThe `score` returned is a metric of the quality of the checkerboard\ndetection. A perfectly detected checkerboard would have a score of 0,\nwhereas a bad detection would have a score of 1.\n\n\n## References\n\nThe implementation of checkerboard detection is mainly based on [libcbdetect](http://www.cvlibs.net/software/libcbdetect/) \nand accompanying paper:\n```\n@INPROCEEDINGS{Geiger2012ICRA,\n author = {Andreas Geiger and Frank Moosmann and Oemer Car and Bernhard Schuster},\n title = {Automatic Calibration of Range and Camera Sensors using a single Shot},\n booktitle = {International Conference on Robotics and Automation (ICRA)},\n year = {2012}\n} \n```\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/lambdaloop/checkerboard", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "checkerboard", "package_url": "https://pypi.org/project/checkerboard/", "platform": "", "project_url": "https://pypi.org/project/checkerboard/", "project_urls": { "Homepage": "https://github.com/lambdaloop/checkerboard" }, "release_url": "https://pypi.org/project/checkerboard/0.2.3/", "requires_dist": [ "opencv-python", "opencv-contrib-python", "gputools; extra == 'gpu'" ], "requires_python": "", "summary": "More robust checkerboard detection, similar algorithm to libcbdetect", "version": "0.2.3" }, "last_serial": 5275003, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "98beadd6bc1a0a8472aabd674138c13c", "sha256": "63c8c6328e4aed0e7d2f580671590a08f4fc5b2c5f57344447dd3156a6af25fa" }, "downloads": -1, "filename": "checkerboard-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "98beadd6bc1a0a8472aabd674138c13c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8585, "upload_time": "2019-02-27T22:52:44", "url": "https://files.pythonhosted.org/packages/ae/42/5318e5a3834d8ac0c7411cb2a457ec862be49a9a895865f9bc20f94cab52/checkerboard-0.1.0-py3-none-any.whl" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "6501bbf1de7c5501ebc2f5ed8e3f759d", "sha256": "c813a50fba330c3383ee0d1f739b2f2158fdd9b3d000170e487c1b8ee7e24304" }, "downloads": -1, "filename": "checkerboard-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6501bbf1de7c5501ebc2f5ed8e3f759d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8562, "upload_time": "2019-02-27T23:06:10", "url": "https://files.pythonhosted.org/packages/3f/bb/bbb9fbcd9e0ca7bd6ffd74facce1801a5c05a4b8eb0df20885f75bc4a65d/checkerboard-0.1.1-py3-none-any.whl" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "90487fa580d665bbebaf419ef93113ff", "sha256": "be888d55b2bb20c445b90cbdd46cb9b792e41a73cd4938a5c90ae9d6f3223a6d" }, "downloads": -1, "filename": "checkerboard-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "90487fa580d665bbebaf419ef93113ff", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8817, "upload_time": "2019-02-28T01:57:25", "url": "https://files.pythonhosted.org/packages/2f/05/6bb71a705b94f68fc07876148c9bf1fe2757176b3c5d7fedda774ab0e947/checkerboard-0.1.2-py3-none-any.whl" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "48db402c1e558d88d8fd4ba4879e64e7", "sha256": "c4b55f88e1e26cbfa31c35426bb2db603bdc8f46bccd1041a49c4c9d6976629b" }, "downloads": -1, "filename": "checkerboard-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "48db402c1e558d88d8fd4ba4879e64e7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8946, "upload_time": "2019-03-25T19:12:08", "url": "https://files.pythonhosted.org/packages/1a/43/c9e9768d9d91d7f5a2cfbbc2aba1734069c92b2057e0948a31b8a4dac401/checkerboard-0.2.0-py3-none-any.whl" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "d3da0876d91a1f3da5e1d2e8c2dd92f9", "sha256": "064edbe0b3dd85266546a9ae2471fc4138aece4075f41a23ef8023fa2f2eca4d" }, "downloads": -1, "filename": "checkerboard-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d3da0876d91a1f3da5e1d2e8c2dd92f9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7005, "upload_time": "2019-03-25T19:18:06", "url": "https://files.pythonhosted.org/packages/de/04/cb183e25b3369eeb377908bd33068b9cc646072ec79d76c1df33a67c356e/checkerboard-0.2.1-py3-none-any.whl" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "0ea629a47b91fec277d976acb97de8f1", "sha256": "a66e6bbb5fa84aa9a6a63c92733bb48e08171227a5aad660e88a3106acb55318" }, "downloads": -1, "filename": "checkerboard-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "0ea629a47b91fec277d976acb97de8f1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7004, "upload_time": "2019-03-25T19:21:20", "url": "https://files.pythonhosted.org/packages/8b/50/b8c27e0b0d852d998910640021b7be295fad218fc95a1b99878adb576822/checkerboard-0.2.2-py3-none-any.whl" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "18bd92109d7fddd6c4ce00d6299e34db", "sha256": "e51c2535606a44106d61b5e70fc66ef1e06f5258f3e08e58e8e51f079d0759dc" }, "downloads": -1, "filename": "checkerboard-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "18bd92109d7fddd6c4ce00d6299e34db", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6646, "upload_time": "2019-05-16T01:44:22", "url": "https://files.pythonhosted.org/packages/69/d3/43183b2e1195c4bdbd3b436ec7d0ebad69cbe885beec781bd4922c839bdd/checkerboard-0.2.3-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "18bd92109d7fddd6c4ce00d6299e34db", "sha256": "e51c2535606a44106d61b5e70fc66ef1e06f5258f3e08e58e8e51f079d0759dc" }, "downloads": -1, "filename": "checkerboard-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "18bd92109d7fddd6c4ce00d6299e34db", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6646, "upload_time": "2019-05-16T01:44:22", "url": "https://files.pythonhosted.org/packages/69/d3/43183b2e1195c4bdbd3b436ec7d0ebad69cbe885beec781bd4922c839bdd/checkerboard-0.2.3-py3-none-any.whl" } ] }