Обнаружение контура на зашумленном изображенииPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Обнаружение контура на зашумленном изображении

Сообщение Anonymous »

Я пытаюсь определить контур края матрицы на изображении, но в правой верхней части изображения есть препятствие.
Исходное изображение:
Изображение

Весь набор данных: https://pan.quark.cn/s/8dfd9b5494e1
Вот что я пробовал:

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

import numpy as np
import cv2
import time
import glob
import os

def process_img(img):
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (15, 15), 1)
ret, th1 = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)

#th1 = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 17, 2)

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
th1 = cv2.morphologyEx(th1, cv2.MORPH_OPEN, kernel)
th1 = cv2.morphologyEx(th1, cv2.MORPH_CLOSE, kernel)

edge = cv2.Canny(th1, 150, 255)
return th1, img, edge

def get_roi(img, binary):
"""
img: source pic
binary: canny
"""
# 寻找轮廓
contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

max_area = 0
temp = 0
for cnt in range(len(contours)):
xxx = cv2.contourArea(contours[cnt])
if xxx > max_area:
max_area = xxx
temp = cnt

series = contours[temp]
x, y, w, h = cv2.boundingRect(series)
p = cv2.arcLength(series, True)
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.drawContours(img, [series], 0, (255, 0, 255), 2)

return img

def die_select(img: np.ndarray, img_template: np.ndarray = None) -> np.ndarray:
th1, img, edge = process_img(img)
img = get_roi(img, edge)
return img
На данный момент мои результаты выглядят так:
[img]https://i.stack. imgur.com/46BQU.jpg[/img]

Мои желаемые результаты выглядят так:
[img]https://i.stack .imgur.com/z7Ufx.png[/img]


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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Обнаружение контура штампа на зашумленном изображении
    Anonymous » » в форуме Python
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Обнаружение линии на зашумленном изображении
    Anonymous » » в форуме Python
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Как идентифицировать пятна в зашумленном моноцветном изображении с помощью OpenCV и C++?
    Anonymous » » в форуме C++
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • Поиск слабой линии на очень зашумленном изображении с переменным фоновым шумом
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Поиск слабой линии на очень зашумленном изображении с переменным фоновым шумом
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

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