{ "info": { "author": "Varun Agrawal", "author_email": "varunagrawal@gatech.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Operating System :: MacOS", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# bbox\n\n`bbox` a Python library that is intended to ease the use of 2D and 3D bounding boxes in areas such as Object Detection by providing a set of flexible primitives and functions that are intuitive and easy to use out of the box.\n\n[![Build Status](https://travis-ci.org/varunagrawal/bbox.svg?branch=master)](https://travis-ci.org/varunagrawal/bbox)\n[![codecov](https://codecov.io/gh/varunagrawal/bbox/branch/master/graph/badge.svg)](https://codecov.io/gh/varunagrawal/bbox)\n\n\n[![PyPI version](https://badge.fury.io/py/bbox.svg)](https://badge.fury.io/py/bbox)\n![PyPI format](https://img.shields.io/pypi/format/bbox.svg)\n![](https://img.shields.io/pypi/status/bbox.svg)\n![](https://img.shields.io/pypi/pyversions/bbox.svg)\n\n\n![](https://img.shields.io/pypi/l/bbox.svg)\n[![Say Thanks!](https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg)](https://saythanks.io/to/varunagrawal)\n\n\n## Features\n\n### 2D Bounding Box\n\nEasily work with bounding boxes using a simple class that abstracts and maintains various attributes.\n\n```python\nfrom bbox import BBox2D, XYXY\n\n# x, y, w, h\nbox = BBox2D([0, 0, 32, 32])\n\n# equivalently, in (x1, y1, x2, y2) (aka two point format), we can use\nbox = BBox2D([0, 0, 31, 31], mode=XYXY)\n\nprint(box.x1, box.y1) # -> 0 0\nprint(box.x2, box.y2) # -> 31 31\nprint(box.height, box.width) # -> 32 32\n\n# Syntatic sugar for height and width\nprint(box.h, box.w) # -> 32 32\n```\n### Sequence of 2D bounding boxes\n\nMost tasks involve dealing with multiple bounding boxes. This can also be handled conveniently with the `BBox2DList` class.\n\n```python\nbbl = BBox2DList(np.random.randint(10, 4),\n mode=XYWH)\n```\n\nThe above snippet creates a list of 10 bounding boxes neatly abstracted into a convenient object.\n\n### Non-maximum Suppression\n\nNeed to perform non-maximum suppression? It is as easy as a single function call.\n```python\nfrom bbox.utils import nms\n\n# bbl -> BBox2DList\n# scores -> list/ndarray of confidence scores\nnew_boxes = nms(bbl, scores)\n```\n\n### Intersection over Union (Jaccard Index)\n\nThe Jaccard Index or IoU is a very useful metric for finding similarities between bounding boxes. `bbox` provides native support for this.\n\n```python\nfrom bbox.metrics import jaccard_index_2d\n\nbox1 = BBox2D([0, 0, 32, 32])\nbox2 = BBox2D([10, 12, 32, 46])\n\niou = jaccard_index_2d(box1, box2)\n```\n\nWe can even use the Jaccard Index to compute a distance metric between boxes as a distance matrix:\n\n```python\nfrom bbox.metrics import multi_jaccard_index_2d\n\ndist = 1 - multi_jaccard_index_2d(bbl, bbl)\n```\n\n### 3D Bounding Box\n\n`bbox` also support 3D bounding boxes, providing convenience methods and attributes for working with them.\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/varunagrawal/bbox", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "bbox", "package_url": "https://pypi.org/project/bbox/", "platform": "any", "project_url": "https://pypi.org/project/bbox/", "project_urls": { "Homepage": "https://github.com/varunagrawal/bbox" }, "release_url": "https://pypi.org/project/bbox/0.9.1/", "requires_dist": [ "numpy (>=1.14.5)", "pyquaternion (>=0.9.2)" ], "requires_python": "", "summary": "2D/3D bounding box library for Computer Vision", "version": "0.9.1" }, "last_serial": 5568355, "releases": { "0.8.0": [ { "comment_text": "", "digests": { "md5": "920e1c2edd04d3c7be8c20d259d65434", "sha256": "bf6e5071f0210a6c8c72fbf280ae406e5214cc4d841d08fe8ddc3cb237311a65" }, "downloads": -1, "filename": "bbox-0.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "920e1c2edd04d3c7be8c20d259d65434", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12926, "upload_time": "2019-01-23T00:54:00", "url": "https://files.pythonhosted.org/packages/5e/2e/c0e428ca4041e25c578def95b36a9870fa47d769037c5281c00992a9b82e/bbox-0.8.0-py3-none-any.whl" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "a6f40170cba171665469376ebb8c9949", "sha256": "2c7ae713c88e4e28839de0884b4271ecef790f801b64ee5e279b5f7c51a68d95" }, "downloads": -1, "filename": "bbox-0.8.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a6f40170cba171665469376ebb8c9949", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12926, "upload_time": "2019-01-23T00:58:47", "url": "https://files.pythonhosted.org/packages/ee/d0/c6e4e5bc23c6353320b61b3010ba78fb9f6d4fcabddb46fe81a1cb28011c/bbox-0.8.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e21660400f54d392f770158d2370e7ec", "sha256": "db8e7ff40559d6e63f69a72c91e265f1e8390ae242e8dd7103f279392f51922a" }, "downloads": -1, "filename": "bbox-0.8.1.tar.gz", "has_sig": false, "md5_digest": "e21660400f54d392f770158d2370e7ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11977, "upload_time": "2019-01-23T00:58:48", "url": "https://files.pythonhosted.org/packages/fd/93/d9cb18760e4603f158a6e2c341111bc3b009afa20df70e5c028b6fa74c0b/bbox-0.8.1.tar.gz" } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "4e4496590c83c2d0eac7f8c3cf85de03", "sha256": "3ec670d112e4f1bd01f3cca16aa351d0c8dda9aabde682b34ed42315e7f74f0b" }, "downloads": -1, "filename": "bbox-0.8.2-py3-none-any.whl", "has_sig": false, "md5_digest": "4e4496590c83c2d0eac7f8c3cf85de03", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13174, "upload_time": "2019-01-28T19:54:39", "url": "https://files.pythonhosted.org/packages/fd/d2/880a376f6bc7721cd6fd2b64b82584b86cc296fb0b13fc2561bcb8c2ab44/bbox-0.8.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f0b61375a1e38e2295f156d658629a16", "sha256": "f81d328408756a140978e368ff6ba6bdf2f75eb28df73168fcf2952c8f1553e0" }, "downloads": -1, "filename": "bbox-0.8.2.tar.gz", "has_sig": false, "md5_digest": "f0b61375a1e38e2295f156d658629a16", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12439, "upload_time": "2019-01-28T19:54:40", "url": "https://files.pythonhosted.org/packages/6a/4a/984be032f678d185f37fb6637fbf285431d2392e07d34c0b4e8ae8aef327/bbox-0.8.2.tar.gz" } ], "0.8.3": [ { "comment_text": "", "digests": { "md5": "6e56b20b66701b12150484104d783038", "sha256": "7f2eb02a852af56a86e7ede4c3c74484b96c7f077e343e91d80572a8fc4fa9c8" }, "downloads": -1, "filename": "bbox-0.8.3-py3-none-any.whl", "has_sig": false, "md5_digest": "6e56b20b66701b12150484104d783038", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14334, "upload_time": "2019-06-26T23:30:21", "url": "https://files.pythonhosted.org/packages/5f/5c/d0c7fb5dd072257db79028eded7e45decc9b6c2e660785613dfacbc37eb6/bbox-0.8.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f205a75dc210b677fc56f60b704fea94", "sha256": "f98c121ea6a3b95da1977e6cc154609b66c674467b242f69ca8f17841fcbc03c" }, "downloads": -1, "filename": "bbox-0.8.3.tar.gz", "has_sig": false, "md5_digest": "f205a75dc210b677fc56f60b704fea94", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12552, "upload_time": "2019-06-26T23:30:22", "url": "https://files.pythonhosted.org/packages/b3/7e/b6c79d2e72d9a2b8c9b2526ed5df3e155c8c675901a77d8c122c3af00738/bbox-0.8.3.tar.gz" } ], "0.8.4": [ { "comment_text": "", "digests": { "md5": "717645a02f5574e1b9c965565688003a", "sha256": "07aa47c7724f197dc5de1c18e6303c2b000d0277e61299d72fb7d91062f356ae" }, "downloads": -1, "filename": "bbox-0.8.4-py3-none-any.whl", "has_sig": false, "md5_digest": "717645a02f5574e1b9c965565688003a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15660, "upload_time": "2019-07-19T14:30:17", "url": "https://files.pythonhosted.org/packages/94/57/6ae65761794569d52256fef74aee96fc07adf557d83bf05df135a15520c1/bbox-0.8.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "34f1dc89b0f869cf62d188828b750648", "sha256": "07fbc8f8bffcc4e5afd1325542d96b4685e0823d93738b3439e586f3e645d9f5" }, "downloads": -1, "filename": "bbox-0.8.4.tar.gz", "has_sig": false, "md5_digest": "34f1dc89b0f869cf62d188828b750648", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13406, "upload_time": "2019-07-19T14:30:19", "url": "https://files.pythonhosted.org/packages/95/7d/b53f44071dbe487e5ada58ea49e518072c25674aea5732bec39534933c3a/bbox-0.8.4.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "b0b7767021ff5bbd1d8d2498deb08e5c", "sha256": "ae0e928469975a7c5a71ae05755652ebac3b09c2f764f1005a72838ddabc0d34" }, "downloads": -1, "filename": "bbox-0.9.1-py3-none-any.whl", "has_sig": false, "md5_digest": "b0b7767021ff5bbd1d8d2498deb08e5c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15662, "upload_time": "2019-07-22T17:30:16", "url": "https://files.pythonhosted.org/packages/d6/e7/8e2dc2b1226881211dad79013c6de46e31379385ebd99b755950c5ed7ae8/bbox-0.9.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "79d125d1296ff51e09b5bbbd738bd6fe", "sha256": "c0ef6805caa8595e5e1ea75f9446c83b594fd038841bbfa7fed7765109769640" }, "downloads": -1, "filename": "bbox-0.9.1.tar.gz", "has_sig": false, "md5_digest": "79d125d1296ff51e09b5bbbd738bd6fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13415, "upload_time": "2019-07-22T17:30:18", "url": "https://files.pythonhosted.org/packages/9a/7b/80f224d03de6063238c03b19f256a9ff0cab7888f81b94df4120f89283ed/bbox-0.9.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b0b7767021ff5bbd1d8d2498deb08e5c", "sha256": "ae0e928469975a7c5a71ae05755652ebac3b09c2f764f1005a72838ddabc0d34" }, "downloads": -1, "filename": "bbox-0.9.1-py3-none-any.whl", "has_sig": false, "md5_digest": "b0b7767021ff5bbd1d8d2498deb08e5c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15662, "upload_time": "2019-07-22T17:30:16", "url": "https://files.pythonhosted.org/packages/d6/e7/8e2dc2b1226881211dad79013c6de46e31379385ebd99b755950c5ed7ae8/bbox-0.9.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "79d125d1296ff51e09b5bbbd738bd6fe", "sha256": "c0ef6805caa8595e5e1ea75f9446c83b594fd038841bbfa7fed7765109769640" }, "downloads": -1, "filename": "bbox-0.9.1.tar.gz", "has_sig": false, "md5_digest": "79d125d1296ff51e09b5bbbd738bd6fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13415, "upload_time": "2019-07-22T17:30:18", "url": "https://files.pythonhosted.org/packages/9a/7b/80f224d03de6063238c03b19f256a9ff0cab7888f81b94df4120f89283ed/bbox-0.9.1.tar.gz" } ] }