140 / 72 / 26
Регистрация: 29.06.2015
Сообщений: 186
1

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

24.11.2018, 22:57. Показов 16632. Ответов 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.11.2018, 22:57
Ответы с готовыми решениями:

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

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

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

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

4
140 / 72 / 26
Регистрация: 29.06.2015
Сообщений: 186
26.11.2018, 00:28  [ТС] 2
Нет экспертов в OpenCV?
0
0 / 0 / 0
Регистрация: 26.08.2020
Сообщений: 1
26.08.2020, 15:59 3
irises, получилось ли у Вас решить?
0
140 / 72 / 26
Регистрация: 29.06.2015
Сообщений: 186
26.08.2020, 20:30  [ТС] 4
К сожалению, не получилось
0
26 / 24 / 1
Регистрация: 29.06.2018
Сообщений: 199
27.08.2020, 08:44 5
irises, на самом деле, нужно провести контурный анализ, дабы все не очевидно и на деле может быть даже человеку не понятно, какие линии какой фигуре принадлежать, в случае с треугольником относительно понятно... особенно если он будет не от руки нарисован...
0
27.08.2020, 08:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.08.2020, 08:44
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru