Обработка изображений: поиск контуров изображения, которые достигают границ изображения

#python #opencv #image-processing #convex-hull

#python #opencv #обработка изображений #выпуклая оболочка

Вопрос:

Я пытаюсь вычислить шероховатость линий на изображении и считаю, что cv2.ConvexHull и cv2.convexivityDefects — это правильный путь. Проблема, с которой я сталкиваюсь, заключается в том, что линии не могут быть собраны в контуры, потому что они выходят за границы изображения. Ниже приведено исходное изображение и края, которые я смог сформировать из него. Есть ли способ просто закрыть фигуры или создать контуры, даже если они открыты? Или есть лучший способ найти шероховатость?

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

 cnts = cv2.findContours(edges.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
hull = cv2.convexHull(cnt,returnPoints=True)
hullDefects = cv2.convexHull(cnt,returnPoints=False)
spiralDefects = cv2.convexityDefects(cnt, hullDefects)
 

Исходное изображение

Построение ребер

Комментарии:

1. Изменить черную или фоновую цветную рамку на изображении?

2. Есть ли функция, которая просто добавляет границу к изображению?

3. Вы можете добавить его вручную в Paint, просто чтобы попробовать. В противном случае используйте функции рисования opencv.

4. Это на самом деле сработало отлично, после некоторого поиска я нашел функцию ImageOps.expand(img,border= 20,fill=’black’), которая могла легко добавить границу. Спасибо!