С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++: OpenCV
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/88: Рейтинг темы: голосов - 88, средняя оценка - 4.83
 Аватар для irises
140 / 72 / 26
Регистрация: 29.06.2015
Сообщений: 186

OpenCV: найти соотношение площади пересечения двух фигур до их обьединения

24.11.2018, 22:57. Показов 17315. Ответов 4

Студворк — интернет-сервис помощи студентам
Всем привет!

Изучаю OpenCV и столкнулась с таким заданием: есть картинка, на которой нарисовано две фигуры, которые пересекаются. Нужно найти соотношение площади их пересечения до их обьединения.

Обыскав весь инет, я не нашла ничего. На даный момент все, что я могу - это определить контуры фигур. Но ума не приложу как найти площади пересечения и обьединения.

C++
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
#include "pch.h"
#include <opencv2/opencv.hpp>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
 
using namespace cv;
using namespace std;
 
Mat src; 
Mat src_gray;
int thresh = 100;
int max_thresh = 255;
RNG rng(12345);
 
/// Function header
void thresh_callback(int, void*);
 
/** @function main */
int main()
{
    const char* imagename = "vib1.jpg";
    /// Load source image and convert it to gray
    src = imread(imagename, 1);
 
    /// Convert image to gray and blur it
    cvtColor(src, src_gray, COLOR_BGR2GRAY);
    blur(src_gray, src_gray, Size(3, 3));
 
    /// Create Window
    const char* source_window = "Source";
    namedWindow(source_window, WINDOW_NORMAL);
    resizeWindow(source_window, 600, 600);
    imshow(source_window, src);
 
    createTrackbar(" Canny thresh:", "Source", &thresh, max_thresh, thresh_callback);
    thresh_callback(0, 0);
 
    waitKey(0);
    return(0);
}
 
/** @function thresh_callback */
void thresh_callback(int, void*)
{
    Mat canny_output;
    vector<vector<Point> > contours;
    vector<Vec4i> hierarchy;
 
    /// Detect edges using canny
    Canny(src_gray, canny_output, thresh, thresh * 3, 3);
    /// Find contours
    findContours(canny_output, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point(0, 0));
 
    /// Draw contours
    Mat drawing = Mat::zeros(canny_output.size(), CV_8UC3);
    for (int i = 0; i < contours.size(); i++)
    {
        Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));
        drawContours(drawing, contours, i, color, 4, 8, hierarchy, 0, Point());
    }
 
    /// Show in a window
    namedWindow("Contours", WINDOW_NORMAL);
    resizeWindow("Contours", 600, 600);
    imshow("Contours", drawing);
}

Помогите, пожалуйста!
Миниатюры
OpenCV: найти соотношение площади пересечения двух фигур до их обьединения  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.11.2018, 22:57
Ответы с готовыми решениями:

Пересечения двух объемных фигур
Необходимо найти точки пересечения(далее построить плоскость) двух объемных фигур, если фигуры заданы параметрический. Пример фигуры

Вычислить количество точек пересечения двух фигур
На плоскости находятся две фигуры. Одна фигура будет фиксирована и это будет многоугольник, другая фигура - круг, будет меняться. Программа...

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

4
 Аватар для irises
140 / 72 / 26
Регистрация: 29.06.2015
Сообщений: 186
26.11.2018, 00:28  [ТС]
Нет экспертов в OpenCV?
0
0 / 0 / 0
Регистрация: 26.08.2020
Сообщений: 1
26.08.2020, 15:59
irises, получилось ли у Вас решить?
0
 Аватар для irises
140 / 72 / 26
Регистрация: 29.06.2015
Сообщений: 186
26.08.2020, 20:30  [ТС]
К сожалению, не получилось
0
26 / 24 / 1
Регистрация: 29.06.2018
Сообщений: 199
27.08.2020, 08:44
irises, на самом деле, нужно провести контурный анализ, дабы все не очевидно и на деле может быть даже человеку не понятно, какие линии какой фигуре принадлежать, в случае с треугольником относительно понятно... особенно если он будет не от руки нарисован...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.08.2020, 08:44
Помогаю со студенческими работами здесь

Нахождение площади пересечения двух прямоугольников
Заранее извиняюсь за казалось бы абсурдный вопрос, но к сожалению ничего вменяемого нагуглить для Шарпа не смог. Два прямоугольника,...

Определение большей площади из двух фигур – круга и квадрата
Составить программу определения большей площади из двух фигур – круга и квадрата. Вывести на экран название и значение большей из площадей:...

Найти область пересечения фигур
Здравствуйте, господа. Ситуация такова: имеется два массива точек (каждая - объект, хранящий 3 координаты, по x, y и z), все точки обоих...

Использовать функцию нахождения координат точки пересечения двух прямых и вычисления площади треугольника
Здравствуйте, необходимо решить задачу, используя функцию. Условие задачи: Три прямые на плоскости заданы уравнениями аkx+bky+ck,...

Как найти точки пересечения этих фигур
Всем доброго времени суток. У меня есть граф редактор. В нем рисуются более 15 видов фигур, считается их площадь (каждой отдельно), их...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 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 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru