Skip to content
Gabriel Burnworth edited this page Feb 22, 2017 · 11 revisions

Input

Image

File

Pass in an image as the first argument when running Plant_Detection.py or Plant_Detection_GUI.py or use the default test iamge soil_image.jpg.

Call Plant_Detection() with the image and/or calibration_img keyword argument as an image filename or an OpenCV/Numpy image object.

Testing Tip: Try using the test images in the PD directory.

Camera

Call Plant_Detection() without providing the image and/or calibration_img keyword arguments and a photo will be taken by an attached USB camera and processed.

Parameters

Calibration

Required input parameters:

  • Blur (odd integer) example: 5
  • Morph (kernel size) example: 15
  • Hue range [(0 - 179), (0 - 179)] example: [160, 20] will include 0-20 and 160-179
  • Saturation range [(0 - 255), (0 - 255)] example: [50, 255]
  • Value range [(0 - 255), (0 - 255)] example: [50, 255]
  • Calibration object separation (in coordinate units) example: 500
  • Camera offset from coordinate location (in coordinate units) example: [200, 100]

Other input parameters:

  • Calibration objects axis (X or Y): Are the objects to detect parallel with the X or Y axes?
  • Bot origin orientation in image (top left, top right, bottom left, bottom right): Which direction is the bot's origin?
  • Calibration iterations (1 - 5): allows iterative approach to determining camera rotation

Plant Detection

Output

Data

Text

Verbose:

Processing Parameters:
-------------------------
Blur kernel size: 15
Morph kernel size: 6
Iterations: 4
Hue:
        MIN: 30
        MAX: 90
Saturation:
        MIN: 20
        MAX: 255
Value:
        MIN: 20
        MAX: 255
-------------------------

Processing image: /home/gabriel/plant-detection/soil_image.jpg
16 plants detected in image.

2 known plants inputted.
Plants at the following machine coordinates ( X Y ) with R = radius are to be saved:
    (   200   600 ) R = 100
    (   900   200 ) R = 120

14 plants marked for removal.
Plants at the following machine coordinates ( X Y ) with R = radius are to be removed:
    (  1429    41 ) R = 74
    (   608    43 ) R = 82
    (  1260   103 ) R = 3
    (  1214   153 ) R = 62
    (  1374   216 ) R = 14
    (  1286   232 ) R = 62
    (  1369   285 ) R = 14
    (  1039   412 ) R = 74
    (  1532   479 ) R = 81
    (   766   500 ) R = 80
    (  1309   608 ) R = 149
    (    59   677 ) R = 61
    (    63   914 ) R = 82                                                                                                                             
    (   773    84 ) R = 20                                                                                                                             
                                                                                                                                                       
1 plants marked for safe removal.                                                                                                                      
Plants at the following machine coordinates ( X Y ) with R = radius were too close to the known plant to remove completely:                            
    (   838    86 ) R = 81                                                                                                                             
                                                                                                                                                       
2 detected plants are known or have escaped removal.                                                                                                   
Plants at the following machine coordinates ( X Y ) with R = radius have been saved:                                                                   
    (   901   189 ) R = 65                                                                                                                             
    (   236   579 ) R = 91

Condensed:

Calibration complete. (rotation:0.0, scale:1.7182)                                                                                                     
16 plants detected in image.                                                                                                                           
known plants input: [{'y': 600, 'x': 200, 'radius': 100}, {'y': 200, 'x': 900, 'radius': 120}]                                                         
parameters input: {'morph': 6, 'H': [30, 90], 'blur': 15, 'S': [20, 255], 'iterations': 4, 'V': [20, 255]}                                             
coordinates input: [600, 400]

Print all JSON:

Input Parameters:

{'morph': 6, 'H': [30, 90], 'blur': 15, 'S': [20, 255], 'iterations': 4, 'V': [20, 255]}

Plants (input and output):

{'known': [{'y': 600, 'x': 200, 'radius': 100}, {'y': 200, 'x': 900, 'radius': 120}], 'save': [{'y': 189.01, 'x': 901.37, 'radius': 65.32}, {'y': 579.04, 'x': 236.43, 'radius': 91.23}], 'safe_remove': [{'y': 85.91, 'x': 837.8, 'radius': 80.52}], 'remove': [{'y': 41.24, 'x': 1428.86, 'radius': 73.59}, {'y': 42.96, 'x': 607.56, 'radius': 82.26}, {'y': 103.1, 'x': 1260.48, 'radius': 3.44}, {'y': 152.92, 'x': 1214.09, 'radius': 62.0}, {'y': 216.5, 'x': 1373.88, 'radius': 13.82}, {'y': 231.96, 'x': 1286.25, 'radius': 61.8}, {'y': 285.23, 'x': 1368.72, 'radius': 14.4}, {'y': 412.37, 'x': 1038.83, 'radius': 73.97}, {'y': 479.38, 'x': 1531.95, 'radius': 80.96}, {'y': 500.0, 'x': 765.64, 'radius': 80.02}, {'y': 608.25, 'x': 1308.59, 'radius': 148.73}, {'y': 676.97, 'x': 59.46, 'radius': 60.95}, {'y': 914.09, 'x': 62.89, 'radius': 82.37}, {'y': 84.2, 'x': 772.51, 'radius': 20.06}]}

Calibration data (input and output):

{'calibration_iters': 3, 'H': [160, 20], 'total_rotation_angle': 0.0, 'center_pixel_location': [465, 290], 'S': [100, 255], 'V': [100, 255], 'calibration_circle_separation': 1000, 'morph': 15, 'coord_scale': 1.7182, 'camera_offset_coordinates': [200, 100], 'image_bot_origin_location': [0, 1], 'blur': 5, 'calibration_circles_xaxis': True}

Files

Farmware

If run as a farmware (app=True):

Database (Web App API)

Requests will be made through the FarmBot API to get a list of known plant locations and to upload detected plants to remove.

Settings (FarmBotOS)

Environment variables will be saved with input parameters and calibration data.

Graphics

Options

Clump Buster

Grey Out Background

Draw Contours

Circle Plants

Images

Result

Debug

Clone this wiki locally