Helper library for drawing ROI in Computer Vision Applications
Now you can crop the drawn roi's
- EasyROI
.
├── EasyROI
│ ├── __init__.py
│ ├── easyROI.py
│ └── utils.py
├── input
│ ├── overpass.mp4
├── output/
├── dev_main.py # Code for testing during developing phase
├── test_library.py # Code for testing during testing phase
├── DEV_README.md # README for developing phase
├── LICENSE
└── README.md
- python>=3.6
- pip
- Create virtual environment
python3 -m venv venv_easy_roi
source venv_easy_roi/bin/activate
- Install EasyROI
pip install EasyROI
If you already have opencv installed:
pip install --no-dependencies EasyROI
- Read the instruction in terminal while drawing roi
- Initializing
from EasyROI import EasyROI
roi_helper = EasyROI(verbose=True)
rect_roi = roi_helper.draw_rectangle(frame, 3) # quantity=3 specifies number of rectangles to draw
frame_temp = roi_helper.visualize_roi(frame, rect_roi)
- See roi format in - Rectangle
line_roi = roi_helper.draw_line(frame, 3) # quantity=3 specifies number of lines to draw
frame_temp = roi_helper.visualize_roi(frame, line_roi)
- See roi format in - Line
circle_roi = roi_helper.draw_circle(frame, 3) # quantity=3 specifies number of circles to draw
frame_temp = roi_helper.visualize_roi(frame, circle_roi)
- See roi format in - Circle
polygon_roi = roi_helper.draw_polygon(frame, 3) # quantity=3 specifies number of polygons to draw
frame_temp = roi_helper.visualize_roi(frame, polygon_roi)
- See roi format in - Polygon
polygon_roi = roi_helper.draw_polygon(frame, 3) # quantity=3 specifies number of polygons to draw
cropped_polys = roi_helper.crop_roi(frame, polygon_roi)
- Can do similarly for rectangular, circle roi
- Returns dictionary with
key
value same as roi_label and value as image of cropped version
quantity = 1
{
'roi': {
0: {'br_x': 573,
'br_y': 443,
'h' : 105,
'tl_x': 322,
'tl_y': 338,
'w' : 251
}
},
'type': 'rectangle'
}
quantity = 2
{
'roi': {
0: {
'point1': (374, 395),
'point2': (554, 438)
},
1: {
'point1': (555, 438),
'point2': (830, 361)
}
},
'type': 'line'
}
quantity = 2
{
'roi': {
0: {
'center': (330, 355),
'point2': (552, 375),
'radius': 222
},
1: {
'center': (702, 374),
'point2': (700, 475),
'radius': 101
}
},
'type': 'circle'
}
quantity = 2
{
'roi': {
0: {
'vertices': [
(586, 435),
(534, 582),
(200, 504),
(356, 403)
]
},
1: {
'vertices': [
(1108, 507),
(738, 662),
(709, 497),
(711, 494),
(927, 414)
]
}
},
'type': 'polygon'
}
- See TODO.md for seeing developments of this project