easyROI
easyROI copied to clipboard
Custom ROI in Computer Vision Applications
EasyROI
Helper library for drawing ROI in Computer Vision Applications
Now you can crop the drawn roi's
Table of Contents
-
EasyROI
- Table of Contents
-
About The Project
- Tech Stack
- File Structure
-
Getting Started
- Prerequisites
- Installation
-
Usage
-
Using EasyROI in your project
- Rectangular roi
- Line Roi
- Circle Roi
- Polygon Roi
- Cropping drawn roi
-
Using EasyROI in your project
-
Formats of roi
- Rectangle
- Line
- Circle
- Polygon
- Future Work
- Contributors
- Acknowledgements and Resources
- License
About The Project
Tech Stack
File Structure
.
├── 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
Getting Started
Prerequisites
- python>=3.6
- pip
Installation
- 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
Usage
- Read the instruction in terminal while drawing roi
Using EasyROI in your project
- Initializing
from EasyROI import EasyROI
roi_helper = EasyROI(verbose=True)
Rectangular roi
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
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
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
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
Cropping drawn roi
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
Formats of roi
Rectangle
quantity = 1
{
'roi': {
0: {'br_x': 573,
'br_y': 443,
'h' : 105,
'tl_x': 322,
'tl_y': 338,
'w' : 251
}
},
'type': 'rectangle'
}
Line
quantity = 2
{
'roi': {
0: {
'point1': (374, 395),
'point2': (554, 438)
},
1: {
'point1': (555, 438),
'point2': (830, 361)
}
},
'type': 'line'
}
Circle
quantity = 2
{
'roi': {
0: {
'center': (330, 355),
'point2': (552, 375),
'radius': 222
},
1: {
'center': (702, 374),
'point2': (700, 475),
'radius': 101
}
},
'type': 'circle'
}
Polygon
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'
}
Future Work
- See TODO.md for seeing developments of this project