Обнаружение Canny Edge не работает с размытыми изображениями по Гауссу - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь обнаружить края на этом изображении полосы. Сначала размыл изображение с помощью фильтра Гаусса и применил обнаружение краев Canny, но это дает только пустое изображение без обнаружения краев.

input image enter image description here

Я сделал так:

#imports
import matplotlib.pyplot as plt
import numpy as np
import cv2
import matplotlib.image as mpimg

image= mpimg.imread("Screenshot from Lane Detection Test Video 01.mp4.png")
image = image[:,:,:3]
image_g = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)

image_blurred = cv2.GaussianBlur(image_g, (3, 3), 0)
threshold_low = 50
threshold_high = 100
image_blurred = image_blurred.astype(np.uint8)
image_canny = cv2.Canny(image_blurred, threshold_low, threshold_high)
plt.imshow(image_canny,cmap='gray')  

1 Ответ

1 голос
/ 20 июня 2020

Вы всегда должны проверять свои данные. Простой пошаговый запуск сценария и проверка промежуточных значений показывает, что происходит не так: mpimg.imread считывает изображение как массив с плавающей запятой со значениями от 0 до 1. После размытия вы приводите его к uint8, который устанавливает почти все значения равны 0. Простое умножение изображения на 255 в какой-то момент перед преобразованием в uint8 решает вашу проблему.

...