Я пишу программу, которая выполняет базовую обработку изображений.
Имейте в виду, что изображения в градациях серого, а не в RGB, также, я довольно плохо знаком с Python, поэтому объяснение того, что я делаю неправильно / правильно, было бы невероятно полезным.
Я пытаюсь написать контурный алгоритм, который следует этому набору правил:
Все светлые пиксели в оригинале должны быть белыми на контурном изображении.Все темные пиксели по краям изображения должны быть черными в контурном изображении.Если пиксель, который не находится на краю изображения, темный, а все 8 окружающих пикселей темные, этот пиксель находится внутри фигуры и должен быть белым на контурном изображении.Все остальные темные пиксели должны быть черными на контурном изображении.
Пока у меня есть это:
def outlines(image):
"""
Finds the outlines of shapes in an image. The parameter must be
a two-dimensional list of pixels. The return value is another
two-dimensional list of pixels which describes an image showing
outlines of the shapes in the original image. Each pixel in the
return value will be either black (0) or white (255).
"""
height=len(image)
width=len(image[0])
new_image=[]
for r in range(height):
new_row=[]
index=0
for c in range(width):
if image[r][c]>128:
new_row.append(255)
if image[r][c]<=128:
new_row.append(0])
new_image.append(new_row)
Может кто-нибудь показать мне, как внедрить алгоритм в мою функцию контуров?
Заранее спасибо.Редактировать: Это задание для моего класса University Comp Sci, я не прошу кого-то делать домашнее задание, потому что я практически не знаю, каким будет следующий шаг.Edit2: Если бы кто-то мог объяснить мне простую функцию обнаружения края, которая похожа на алгоритм, который я должен создать, я был бы признателен.