Как идентифицировать контуры, используя OpenCV или традиционные методы?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как идентифицировать контуры, используя OpenCV или традиционные методы?

Сообщение Anonymous »

Фон: в настоящее время у меня есть много изображений из стали в серости. Некоторые из них имеют высокую яркость, в то время как другие имеют неровную яркость. Как показано на рисунке ниже, как я могу лучше извлечь их очертания? Затем я выполняю обрезку. Код для обработки обрезанной части выглядит следующим образом: < /p>

Код: Выделить всё

m=img.shape[0]//2
count=mayregion
if clip_top:
last_row = img_three[-1, :]
mid_row= img_three[m, :]
mean_pixel = (np.mean(last_row)+np.mean(mid_row))//2
count=(np.sum(last_row > 240)+np.sum(mid_row>240))
else:
last_row = img_three[0, :]
mid_row = img_three[m, :]
mean_pixel = (np.mean(last_row) + np.mean(mid_row)) // 2
count = (np.sum(last_row > 240) + np.sum(mid_row > 240))
if mean_pixel>240:
k=100
elif mean_pixel>210:
k=80
else:
k=30
img_three_color = cv2.cvtColor(img_three, cv2.COLOR_GRAY2BGR)
img_three = cv2.GaussianBlur(img, (7, 7), 1)
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3))
img_open = cv2.morphologyEx(img_three, cv2.MORPH_OPEN, kernel)
img_close = cv2.morphologyEx(img_open, cv2.MORPH_CLOSE, kernel)
_, binary = cv2.threshold(img_close, k, 255, cv2.THRESH_BINARY)

contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

filtered_contours = [cnt for cnt in contours if cv2.contourArea(cnt) >= 100]
cv2.drawContours(img_three_color, filtered_contours, -1, (0, 255, 0), 10)
Однако контур, полученный этим методом, по -прежнему имеет некоторые недостатки. src = "https://i.sstatic.net/iyjwcavw.jpg"/>
Изображение, полученное с помощью моего метода (зеленая линия представляет контур):


Подробнее здесь: https://stackoverflow.com/questions/797 ... al-methods
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»