Форум программистов, компьютерный форум CyberForum.ru

Разбить изображение по яркости - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Не работают цыклы for http://www.cyberforum.ru/cpp-beginners/thread1581580.html
Всем доброго дня, программа почему-то отказывается выводить массив с помощью цикла, много раз так выводил . а сейчас не получается. Ни при помощи фунции вывод вывести ни при помощи цикла в функции мейн. Нужна Ваша помошь. #include<iostream> //подключение нужных библиотек #include<math.h> #include<conio.h> #include<stdio.h> #include<stdlib.h> using namespace std; const int...
C++ Найти минимальное положительное числа из набора Дано целое число n и набор из N чисел найти минимальное положительное число из данного набора Если положительное число в наборе отсутствует то вывести 0 http://www.cyberforum.ru/cpp-beginners/thread1581577.html
Найти номер экстремального элемента C++
Дано число n и набор из N целых чисел. Найти номер последнего экстремального ( то есть минимального или максимального) элемента из данного набора
Найти номер минимального элемента C++
Найти номер первого и последнего минимального элемента из заданного набора и вывести их в указанном порядкета из данного набора и вывести их в указанном порядке
C++ Возведение двойки в 40-вую и более степень http://www.cyberforum.ru/cpp-beginners/thread1581548.html
Здравствуйте! Нужно реализовать возведение двойки в 40-вую и более степень. Вот мой код С++: #include <iostream> using namespace std; int k(1); void doubling(int *array, int &size) //функция удваивания эл-ов массива { int i;
C++ Площадь произвольного многоугольника с проверкой на пересечения Площадь произвольного многоугольника. Даны натуральное число n, действительные числа x1,y1,x2,y2,...,xn,yn. Найти площадь n-угольника произвольной конфигурации, вершины которого при некотором последовательном обходе имеют координаты (x1,y1),(x2,y2),...,(xn,yn). Реализовать проверку корректности исходных данных в подпрограмме. Все бы хорошо нашлось по формуле, но нужна проверка на... подробнее

Показать сообщение отдельно
belka32
0 / 0 / 0
Регистрация: 21.09.2014
Сообщений: 51
15.11.2015, 14:48  [ТС]     Разбить изображение по яркости
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
public ref class Cell{
 
    short  x1, x2, y1, y2;
    PartIm * h;
    int deep;
    int high;
 
public:
     Cell (int n, short X1, short  Y1, short  X2, short Y2){
        deep = -1;
        high = n;
        h = nullptr;
        x1 = X1;
        y1 = Y1;
        x2 = X2;
        y2 = Y2;
        
 
    }
     void CellInit(int n, short X1, short  Y1, short  X2, short Y2){
         deep = -1;
         high = n;
         h = nullptr;
         x1 = X1;
         y1 = Y1;
         x2 = X2;
         y2 = Y2;
        
 
     }
        short GetX1(){ return x1; }
    short GetX2(){ return x2; }
    short GetY1(){ return y1; }
    short GetY2(){ return y2; }
    
}
А вот и алгоритм:
 
        dif=100;// разность по яркости
        int n=1;//кол-во эл-ов в списке
        List <Cell ^> ^ list;
    list = gcnew List<Cell ^>();
    list->Clear();
    list->Add(gcnew Cell (-1, 0, 0, 255, 255));
        for (int i = 0; i <= n - 1; i++)
            
{
        bool t = false; short x1, x2, y1, y2;
    for (y1 = list[i]->GetY1(); y1 <= list[i]->GetY2() && t == false; ++y1)
        for (x1 = list[i]->GetX1(); x1 <= list[i]->GetX2() && t == false; ++x1)
            for (y2 = list[i]->GetY1(); y2 <= list[i]->GetY2() && t == false; ++y2)
                for (x2 = list[i]->GetX1(); x2 <= list[i]->GetX2() && t == false; ++x2)
                {
                    if (abs(Bitmap->GetPixel(x1, y1).B - Bitmap->GetPixel(x2, y2).B) > dif)
                                       {
                                          list->Add(gcnew Cell(-1, 0, 0, 0, 0));
                      list->Add(gcnew Cell(-1, 0, 0, 0, 0));
                                          t=true;
if ((y1 != y2))
                        {
 
                            list[n + 1]->CellInit(n, list[i]->GetX1(), list[i]->GetY1(), list[i]->GetX2(), y2 - 1);
                            list[n + 2]->CellInit(n, list[i]->GetX1(), y2, list[i]->GetX2(), list[i]->GetY2());
                            for (int k = list[i]->GetX1(); k <= list[i]->GetX2() && (y2 - 1) >= 0; k++)
                            {
                                Bitmap->SetPixel(k, y2 - 1, Color::FromArgb(255, 0, 0, 0));
                            }
                        }
                        else if ((x1 != x2) && (y1 == y2))
                        {
 
                            list[n + 1]->CellInit(n, list[i]->GetX1(), list[i]->GetY1(), x2 - 1, list[i]->GetY2());
                            list[n + 2]->CellInit(n, x2, y2, list[i]->GetX2(), list[i]->GetY2());
 
                            for (int k = list[i]->GetY1(); k <= list[i]->GetY2(); k++)
                            {
 
                                Bitmap->SetPixel(x2 - 1, k, Color::FromArgb(255, 0, 0, 0));
                            }
                        }
 
                                        }
                         if (t==false)
                    {// что-то делаю с i-ым элементом листа }
}
 
Текущее время: 11:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru