Определите, является ли изображение пикселированным, используя преобразование canny и hough - PullRequest
0 голосов
/ 30 июня 2018

Я читал онлайн и обнаружил, что можно определить, является ли изображение пиксельным или нет, основываясь на количестве линий, обнаруженных с помощью детектора краев, а затем применяя преобразование Хафа.
Я попробовал этот метод, и преобразование Хафа, похоже, не определяет линии должным образом. Я не могу понять, почему он не работает должным образом.
Вот некоторые изображения результатов для справки: Результат обнаружения острых краев

и результат преобразования Хафа


Что я могу сделать, чтобы улучшить обнаружение линии?
Код, который я использую для этого, основан на некоторых онлайн-уроках:

img = cv2.imread(image_path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

high_thresh, thresh_im = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
lowThresh = 0.5*high_thresh
edges = cv2.Canny(img, lowThresh, high_thresh)

minLineLength = 200
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.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

1 Ответ

0 голосов
/ 30 июня 2018
edges = cv2.Canny(gray,50,150,apertureSize = 3)
minLineLength = 200
maxLineGap = 10
lines = cv2.HoughLinesP(edges,1,np.pi/180,100,minLineLength,maxLineGap)
# edited this line
for line in lines:
    x1,y1,x2,y2 = line[0]
    cv2.line(image,(x1,y1),(x2,y2),(0,255,0),2)
...