1

I need to detect all the lines (edges) in an image an their positions in my xamarin application .

like in the image attached .

I have tried openCV in python but still I did not get all the lines , I only got boundary boxes around the objects and only straight lines , but I need to detect the sloping lines too .

here is the python code I used :`

blur = cv2.GaussianBlur(img, (3,3), 0)
canny = cv2.Canny(blur, l_th, u_th)
dilated = cv2.dilate(canny, None, iterations=3)
contours, hierarchy = cv2.findContours(dilated, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
for contour in contours:
    (x, y, w, h) = cv2.boundingRect(contour)
    cv2.rectangle(coloured_img, (x, y), (x+w, y+h), (0, 255, 0), 2)

the original image :

the original image

the output that I want :

the output that I want

the output that I got :

the output that I got

any suggestions please ?

1 Answer 1

1

Try HoughLinesP in OpenCV

import cv2
import numpy as np

img = cv2.imread('dave.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,150,apertureSize = 3)
minLineLength = 100
maxLineGap = 10
lines = cv2.HoughLinesP(edges,1,np.pi/180,100,minLineLength,maxLineGap)
for x1,y1,x2,y2 in lines[0]:
    cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2)

cv2.imwrite('houghlines5.jpg',img)

More info - OpenCV doc

Sign up to request clarification or add additional context in comments.

1 Comment

Unfortunately I do not have OpenCV installed now - the answer comes from documentation and memory. That's why I said "try"

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.