Microscopy crystal particle object length detection
Does it have to use python? For exploring your workflow and pipeline for a kind of image analysis, I would suggest getting ImageJ / FiJi. Use it together with the MorphoLibJ plugin to get more options on morphological segmentation.
Once you determined your workflow you can code it in python to batch analyze.

Anyways, your workflow should look like this, regardless of which software you use:


Segment particles either by rgb-thresholding or by converting to grayscale beforehand. An adaptive method is preferred. You can also use the contours you got. The aim is to produce a binary (black/white) image, where your particles are white and everything else is black (or the other way around).
On this image you perform "distance transform watershed". Which is also doable with python.
Perform optical checks on the resulting image to confirm that particles aren't over- or undersegmented. Refine parameters like the dynamics, the distance metric, seeding, etc. if needed. 
If correctly segmented perform particle analysis on the image. In ImageJ you can go "Analyze -> Set Measurements" and select variables to measure - for example Feret Diameter - Length. In python i am not experienced enough but I would go with this tutorial