getting error in canny edge detection
Question: i am trying to write a code using opencv python that automatically get canny
threshold values instead of doing them manually every time.

    
    
    img= cv2.imread('micro.png',0)
    output = np.zeros(img.shape, img.dtype)
    # Otsu's thresholding
    ret2,highthresh = cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
    lowthresh=0.1*highthres
    edges = cv2.Canny(img,output,lowthresh,highthresh)
    cv2.imshow('canny',edges)
    

i am getting this error "File "test2.py", line 14, in edges =
cv2.Canny(img,output,lowthresh,highthresh) TypeError: only length-1 arrays can
be converted to Python scalars"

can anyone help me to sort out this error.thankx in advance


Answer: It seems like `cv2.threshold` returns the detected edges, and `Canny` applies
them to the image. The code below worked for me and gave me some nice detected
edges in my image.

    
    
    import cv2
    
    cv2.namedWindow('canny demo')
    
    img= cv2.imread('micro.png',0)
    ret2,detected_edges = cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
    edges = cv2.Canny(detected_edges,0.1,1.0)
    dst = cv2.bitwise_and(img,img,mask = edges)
    cv2.imshow('canny',dst)
    
    if cv2.waitKey(0) == 27:
        cv2.destroyAllWindows()
    

