画像からエッジを検出する代表的な手法として、Cannyエッジ検出というものがあります。OpenCVを使用すると、簡単にCannyエッジ検出を行うことができます。
cv2.Canny(image, threshold1, threshold2)
Cannyエッジ検出では、画像データに加えて、2つの引数threshold1とthreshold2が必須です。この2つの値はエッジ検出の際に以下のように使用されます。
threshold2より大きい場合: エッジとして検出される
threshold1より大きくthreshold2より小さい場合: エッジと隣接している場合には、エッジとして検出される
threshold1より小さい場合: エッジとして検出されない
エッジ検出結果
元画像

threshold1=100, threshold2=100
import cv2
img = cv2.imread('img/img.jpg')
dst = cv2.Canny(img, 100, 100)
cv2.imwrite('img/img_canny.jpg', dst)
結果

少し線が多すぎる印象です。
threshold1=100, threshold2=300
import cv2
img = cv2.imread('img/img.jpg')
dst = cv2.Canny(img, 100, 300)
cv2.imwrite('img/img_canny.jpg', dst)
結果

いい感じにエッジが検出できました。
threshold1=100, threshold2=600
import cv2
img = cv2.imread('img/img.jpg')
dst = cv2.Canny(img, 100, 600)
cv2.imwrite('img/img_canny.jpg', dst)
結果

少し線が少ないでしょうか。
threshold1=600, threshold2=600
import cv2
img = cv2.imread('img/img.jpg')
dst = cv2.Canny(img, 600, 600)
cv2.imwrite('img/img_canny.jpg', dst)
結果

threshold1を上げると、線のつながりがなくなってしまいました。