gabrielburnworth / plant-detection

Detects and marks plants in a soil area image using Python OpenCV
68 stars 24 forks source link
opencv python

Plant Detection

Detects and marks green plants in a (not green) soil area image using Python OpenCV.

The goal is to mark unwanted volunteer plants for removal.

For an overview of the image processing performed, see the wiki.

Contents


Installation

pip install -r requirements.txt

see Contributing for more installation options

Basic Usage

Run the script:

Using the sample soil image, soil_image.jpg.

Run the script: python -m plant_detection.PlantDetection

View soil_image_marked.jpg

Alternatively, process images using a python command line:

from plant_detection.PlantDetection import PlantDetection
help(PlantDetection)
PD = PlantDetection(image='plant_detection/soil_image.jpg')
PD.detect_plants()
PD = PlantDetection(image='plant_detection/soil_image.jpg', morph=15, iterations=2, debug=True)
PD.detect_plants()

Or, run the GUI and move the sliders:

python -m plant_detection.PlantDetection --GUI

Default image to process is soil_image.jpg. To process other images, use:

python -m plant_detection.PlantDetection --GUI other_image_name.png

Image file processing suggested workflow

1. Save image to be processed

For example: test_image.jpg

2. Run the GUI and move the sliders:

python -m plant_detection.PlantDetection --GUI test_image.jpg

This will create a plant detection parameters input file from the slider values.

3. Run detection:

python -m plant_detection.PlantDetection test_image.jpg

Or, for more options, enter a python command line: python

from plant_detection.PlantDetection import PlantDetection
PD = PlantDetection(image='test_image.jpg', from_file=True)
PD.detect_plants()

(For examples of output for graphic-related keyword arguments, see the wiki)

4. View output

Annotated image: test_image_marked.png

Tips

View help

python -c 'from plant_detection.PlantDetection import PlantDetection; help(PlantDetection)'

Hue range aid

python -m plant_detection.PlantDetection --GUI plant_detection/p2c_test_color.jpg

Project Directory

plant-detection
├── plant_detection  - Plant Detection Package
│   ├── tests  - project test suite
│   ├── PlantDetection.py  - calibrate and detect plants
│   ├── Capture.py  - take photos with a camera
│   ├── Parameters.py  - handle input parameters
│   ├── Image.py  - image processing
│   ├── DB.py  - handle plant data
│   ├── P2C.py  - pixel to coordinate conversion
│   ├── PatternCalibration.py  - alternative calibration method
│   ├── CeleryPy.py  - convert plant data to CeleryScript
│   ├── Log.py - custom send_message wrapper
│   ├── ENV.py  - environment variable save and load operations
│   ├── GUI.py  - interactively change input parameters
│   ├── p2c_test_calibration.jpg  - coordinate conversion calibration test image
│   ├── p2c_test_objects.jpg  - coordinate conversion detection test image
│   ├── p2c_test_color.jpg  - color range test image
│   └── soil_image.jpg  - plant detection test image
├── quickscripts  - scripts to run specific tasks
└── README.md