plant-detection icon indicating copy to clipboard operation
plant-detection copied to clipboard

Detects and marks plants in a soil area image using Python OpenCV

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
  • Basic Usage
    • Option 1: Run script
    • Option 2: Python console
    • Option 3: GUI
  • Suggested Workflow
  • Tips
  • Project Directory

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