С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481

OpenCV polygon roi

28.09.2021, 10:15. Показов 1128. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Может кто подсказать готовый класс для удаления фона за границей роя, сам рой нужно сделать так чтобы можно было выбрать по точкам
Вот так например:


Видел готовый класс, но он не работает, на первый взгляд что то не так с циклом и алгоритмом в целом
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
import cv2
import imutils
import numpy as np
import joblib
 
pts = []  # for storing points
 
 
def draw_roi(event, x, y, flags, param):
    img2 = img.copy()
 
    if event == cv2.EVENT_LBUTTONDOWN:  # Left click, select point
        pts.append((x, y))
 
    if event == cv2.EVENT_RBUTTONDOWN:  # Right click to cancel the last selected point
        pts.pop()
 
    if event == cv2.EVENT_MBUTTONDOWN:
        mask = np.zeros(img.shape, np.uint8)
        points = np.array(pts, np.int32)
        points = points.reshape((-1, 1, 2))
 
        mask = cv2.polylines(mask, [points], True, (255, 255, 255), 2)
        mask2 = cv2.fillPoly(mask.copy(), [points], (255, 255, 255))  # for ROI
        mask3 = cv2.fillPoly(mask.copy(), [points], (0, 255, 0))  # for displaying images on the desktop
 
        show_image = cv2.addWeighted(src1=img, alpha=0.8, src2=mask3, beta=0.2, gamma=0)
 
        cv2.imshow("mask", mask2)
        cv2.imshow("show_img", show_image)
 
        ROI = cv2.bitwise_and(mask2, img)
        cv2.imshow("ROI", ROI)
        cv2.waitKey(0)
 
    if len(pts) > 0:
        # Draw the last point in pts
        cv2.circle(img2, pts[-1], 3, (0, 0, 255), -1)
 
    if len(pts) > 1:
        #
        for i in range(len(pts) - 1):
            cv2.circle(img2, pts[i], 5, (0, 0, 255), -1)  # x ,y is the coordinates of the mouse click place
        cv2.line(img=img2, pt1=pts[i], pt2=pts[i + 1], color=(255, 0, 0), thickness=2)
 
    cv2.imshow('image', img2)
 
 
# Create images and windows and bind windows to callback functions
img = cv2.imread("1.PNG")
img = imutils.resize(img, width=500)
cv2.namedWindow('image')
cv2.setMouseCallback('image', draw_roi)
print("[INFO] Click the left button: select the point, right click: delete the last selected point, click the middle button: determine the ROI area")
print("[INFO] Press ‘S’ to determine the selection area and save it")
print("[INFO] Press ESC to quit")
 
while True:
    key = cv2.waitKey(1) & 0xFF
    if key == 27:
        break
    if key == ord("s"):
        saved_data = {
            "ROI": pts
        }
        joblib.dump(value=saved_data, filename="config.pkl")
        print("[INFO] ROI coordinates have been saved to local.")
        # break
cv2.destroyAllWindows()
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.09.2021, 10:15
Ответы с готовыми решениями:

OpenCV (ROI, Canny)
Делаю снимок с камеры, сохраняю его на устройстве по пути filePath, далее нужно обрезать эту фотографию и применить к полученному...

OpenCV интересующая область на рисунке (ИОР) (ROI)
Добрый день. С помощью метода cvPolyLine отрисовываю на изображении несколько четырехугольников. Как с помощью средств opencv или обычными...

ROI(Region of Interest) в OpenCV при работе с камерой
Люди добрые подскажите, как выделить необходимый участок с видео, для дальнейшей работы только с ним, и показать его в отдельном окошке. ...

2
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
28.09.2021, 16:46  [ТС]
Сделал

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
import cv2
import numpy as np
import copy
 
 
def crop_img(image, coords):
    mask = np.zeros(image.shape, dtype=np.uint8)
    roi_corners = np.array([coords], dtype=np.int32)
 
    channel_count = image.shape[2]
    ignore_mask_color = (255,) * channel_count
    cv2.fillPoly(mask, roi_corners, ignore_mask_color)
    masked_image = cv2.bitwise_and(image, mask)
    return masked_image
 
 
def on_EVENT_LBUTTONDOWN(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:
        cv2.circle(img, (x, y), 3, (255, 0, 0), thickness=5)
        cv2.imshow("image", img)
        coord.append((x, y))
 
 
img = cv2.imread("1.jpg")
img_new = copy.copy(img)
coord = []
 
cv2.namedWindow("image")
cv2.setMouseCallback("image", on_EVENT_LBUTTONDOWN)
 
 
while True:
    img_show = cv2.imshow("image", img)
 
    key = cv2.waitKey(1) & 0xFF
    if key == ord("s"):
        img = crop_img(img_new, coord)
 
    if key == ord("r"):
        coord = []
        img = cv2.imread("1.jpg")
 
    if key == ord("q"):
        break
0
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
29.09.2021, 06:16  [ТС]
Только может кто помочь для видео тоже самое сделать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.09.2021, 06:16
Помогаю со студенческими работами здесь

Ошибка компиляции undefined reference to `Polygon::Polygon(Point const*, int)'
#include "Polygon.h" #include <iostream> #include <iomanip> using std::cout; using std::endl; int main() ...

Class Point, class Polygon, Найти площадь Polygon (выпуклый многоугольник)
Доброго времени суток. Имеется класс точки Point, класс выпуклого многоугольника Polygon, состоящий из точек. Требуется найти площадь...

Расчет ROI?
В последнее время очень модно говорить об эффективности рекламной кампании. Поэтому для многих универсальным критерием качества стал...

Работа с объектами в области ROI
Здравствуйте, может кто-то подсказать, как сделать обработку изображения на одном фото. Т.е. у меня есть код, в котором я выделяю с помощью...

Поиск объектов области ROI
Здравствуйте, может ли кто-то подсказать, как установить область ROI в определенном месте на изображении, в которой бы происходил поиск...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru