Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 17.10.2016
Сообщений: 74

Удаление вложенных контуров

10.05.2019, 20:31. Показов 1450. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!

Возникла проблема с удалением вложенных контуров (объект изучения - микроскопия крови). Пробовала с помощью cv.RETR_EXTERNAL, но работает не во всех случаях, что странно... Можно ли каким то еще способом определить вложенные контуры и их удалить?

(были идеи о том чтобы использовать dist = cv.pointPolygonTest(c, center, False), если сможете подсказать что нибудь на счет моего корявого кода буду очень благодарна. Думаю что проблема в цикле, нужно сделать два, но что то никак не укладывается в голове как это должно работать)

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import numpy as np
import cv2 as cv
 
hsv_min = np.array((0, 77, 17), np.uint8)
hsv_max = np.array((208, 255, 255), np.uint8)
 
if __name__ == '__main__':
    img = cv.imread('1.png',0)
    imgcopy=img
    sigma = 0.33
    # compute the median of the single channel pixel intensities
    v = np.median(img)
    # apply automatic Canny edge detection using the computed median
    lower = int(max(0, (1.0 - sigma) * v))
    upper = int(min(255, (1.0 + sigma) * v))
    blur = cv.GaussianBlur(img, (7, 7), 0)                               # от настроек зависит многое
    ret, thr = cv.threshold(blur, 140, 255, cv.THRESH_TRIANGLE)   
    thr = cv.Canny(thr, lower, upper)
 
    thrcopy = cv.resize(thr, (960, 540))
    cv.imshow("edged.jpg", thrcopy)
    # RETR_EXTERNAL удаляет внутренние эллипсы!!!
    contours0, hierarchy = cv.findContours(thr.copy(), cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
 
    # Find the rotated rectangles and ellipses for each contour
    minRect = [None] * len(contours0)
    minEllipse = [None] * len(contours0)
    for i, c in enumerate(contours0):
        minRect[i] = cv.minAreaRect(c)
        if c.shape[0] > 5:
            minEllipse[i] = cv.fitEllipse(c)
    count = 1
    di=0
    for i, c in enumerate(contours0):
        color = (0, 0, 0)
        colorOut = (255, 255, 255)
        # ellipse
        if c.shape[0] > 5:
            cv.ellipse(imgcopy, minEllipse[i], colorOut, 2)
            count = count + 1
        # rotated rectangle                           для нахождения центров
        box = cv.boxPoints(minRect[i])
        box = np.intp(box)  # для нахождения центров
        # находим точки центров эллипсов
        W = minRect[1][0]
        H = minRect[1][1]
 
        Xs = [i[0] for i in box]
        Ys = [i[1] for i in box]
        x1 = min(Xs)
        x2 = max(Xs)
        y1 = min(Ys)
        y2 = max(Ys)
        center = (int((x1 + x2) / 2), int((y1 + y2) / 2))
        #cv.circle(imgcopy, center, 3, (0, 255, 0), -1) #нашла точки центров и вывела их
        dist = cv.pointPolygonTest(c, center, False)
        if dist < 0:
            cv.circle(imgcopy, center, 3, (0, 255, 0), -1)
            di=di+1
            if c.shape[0] > 5:
                cv.ellipse(imgcopy, minEllipse[i], color, 2)
 
 
    print(count - 1)
    print(di)
    imgcopy = cv.resize(imgcopy, (960, 540))
    cv.imshow('Contoursd', imgcopy)
 
    cv.waitKey()
    cv.destroyAllWindows()
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.05.2019, 20:31
Ответы с готовыми решениями:

Удаление элементов из вложенных списков
Здравствуйте, столкнулся с тем, что есть необходимость удалять определенные элементы из отдельного подсписка главного списка. И казалось...

Удаление вложенных элементов списка на проходе
Задача: удалить из многомерного списка data все слова, что встречаются в нем менее семи раз. Задача вроде элементарна, но по какой-то...

Удаление вложенных контуров
Есть два списка контуров Каким образом можно удалить контура, которые находятся друг внутри друга? Код работает некорректно и контура...

4
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
11.05.2019, 10:09
Что такое вложенный контур?
0
1 / 1 / 0
Регистрация: 17.10.2016
Сообщений: 74
11.05.2019, 10:19  [ТС]
dondublon, когда один контур внутри другого
Изображения
 
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
11.05.2019, 10:53
Понятно. Думаю, можно свести к определению, что каждая точка одного контура лежит внутри другого.
0
1 / 1 / 0
Регистрация: 17.10.2016
Сообщений: 74
11.05.2019, 11:04  [ТС]
dondublon, так и думаю поступить, то есть через двойной цикл прогонять и сравнивать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.05.2019, 11:04
Помогаю со студенческими работами здесь

Удаление контуров в графе
Очень нужна помощь. Пожалуйста код на С# Нужно из ориентированного графа содержащий контуры(циклы), удалить минимальное кол-во дуг, и...

Удаление одного списка контуров из другого
Пытаюсь склеить два списка контуров и удалить вложенные контуры. Вложенные нахожу с помощью pointPolygonTest но удалить контура не...

Удаление вложенных папок по дате
Всем привет. Нужна помощь. Пишу программу, которая удаляет вложенные папки по дате в их названии, старше 10 дней. Формат папок, который...

Удаление всех вложенных папок с заданным именем
Доброе время суток! Подскажите, пожалуйста, как с помощью VBA можно удалить все вложенные папки с заданным именем со всем их содержимым? ...

Удаление определенного атрибута в массиве вложенных документов
Здравствуйте. Имеется коллекция record, хранящая архивные дела. Вот её упрощенная структура (опустил большинство атрибутов): { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru