Interactive coordinate picker for Computer Vision frameworks
Project description
The problem
Every major CV framework needs coordinates before it can run.
regioncounter = RegionCounter(region=[120, 80, 640, 480]) # YOLO โ where does this region come from?
predictor.predict(box=np.array([120, 80, 640, 480])) # SAM2 โ same problem
The standard workflow: open CVAT or Roboflow โ grab coordinates โ paste them back into code. Every. Single. Time.
The fix
import pixpick
region = pixpick.box("frame.jpg") # drag a box on the image
zone = pixpick.polygon("frame.jpg") # click polygon vertices
# coordinates are ready โ unpack directly into any framework
# YOLO:
regioncounter = RegionCounter(
region=region.yolo_region, # pass region points
model="yolo26n.pt",
)
# same for YOLOE
model.predict("frame.jpg", visual_prompt= region.yolo_prompt())
# SAM1/SAM2:
predictor.predict(box=region.sam())
A window opens on your image. You interact. You get framework-ready coordinates back in Python. No round-trips.
Install
pip install pixpick
Selectors
| Selector | How to use | Returns |
|---|---|---|
pixpick.box() |
Left-click + drag | Box |
pixpick.polygon() |
Click vertices โ Enter to confirm |
Polygon |
Box controls โ drag to draw ยท R to reset ยท Esc to cancel
Polygon controls โ LMB add point ยท RMB undo ยท Z clear ยท Enter confirm ยท Esc cancel
Output formats
Every selection object carries all the formats you'll ever need.
# โโ Box โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
region = pixpick.box("frame.jpg")
region.xyxy # [x1, y1, x2, y2] absolute pixels
region.xywh # [x, y, w, h] absolute pixels
region.norm_xywh # [x, y, w, h] 0.0 โ 1.0 โ YOLO label format
region.center # (cx, cy)
region.area # pixelsยฒ
# โโ Polygon โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
zone = pixpick.polygon("frame.jpg")
zone.points # [(x0,y0), (x1,y1), ...] absolute pixels
zone.as_numpy # np.array shape (N, 2)
zone.norm # [(x0n,y0n), ...] 0.0 โ 1.0
zone.bbox # โ Box tight bbox around the polygon
zone.npoints # int
For more details, see Selectors.
Framework integration
| Framework | Selector | Method |
|---|---|---|
| Ultralytics YOLOE โ visual prompt | Box |
region.yolo_prompt() |
| Ultralytics YOLO โ region | Box |
region.yolo_region() |
| SAM / SAM2 โ box prompt | Box |
region.sam() |
| Any other format | Box / Polygon |
region.to_raw() |
Persistence
Pick once, reuse forever.
region.save("zone.json")
region = pixpick.load("zone.json") # Box and Polygon both work
Production pattern โ pick interactively the first time, load on every subsequent run:
from pathlib import Path
import pixpick
ZONE = "config/count_zone.json"
zone = pixpick.load(ZONE) if Path(ZONE).exists() else pixpick.polygon("frame.jpg")
zone.save(ZONE)
Docs
| ๐ Getting Started | Installation, first selection, controls |
| ๐ฏ Selectors | All properties and methods for Box and Polygon |
| ๐ Framework Integration | YOLO, SAM2 and more |
| ๐พ Persistence | Save, load, JSON schema |
| ๐๏ธ Architecture | How it's built and how to extend it |
| ๐บ๏ธ Roadmap | What's coming next |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pixpick-0.1.0.tar.gz.
File metadata
- Download URL: pixpick-0.1.0.tar.gz
- Upload date:
- Size: 12.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38ec0c9f464c97284ca114e55046231d90e66744799a7eab49ffe066a22396f9
|
|
| MD5 |
3ac6da1c3024bbc25594de7e5a9c5558
|
|
| BLAKE2b-256 |
93316156b7d3857711b866276d71c4bb9382d10d005346ba086edb9e76d40118
|
File details
Details for the file pixpick-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pixpick-0.1.0-py3-none-any.whl
- Upload date:
- Size: 13.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24d22c46c72d3bef6c472ec906df296444184a3d6bed811cf30d07a18c49ad97
|
|
| MD5 |
c436604bcf1d998c7fda812a4dc2e3e8
|
|
| BLAKE2b-256 |
c9130e9cfc18fbf650e6bf2c500da9e03e48d653420d16fd586e5766cead528b
|