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

Программа, удаляющая провода и царапины с фотографий - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Реализация мелких функций в hpp http://www.cyberforum.ru/cpp-beginners/thread1188055.html
Здравствуйте! Есть шаблон класса Vector с кучей мелких функций, типа сумма, разность, operator+, проч. Вопрос - стоит ли выносить их в отдельный cpp файл? Везде встречаю разные мнения. Повторюсь, что речь идет именно о мелких функция в одну строчку, типа: static Vector2 reverse(const Vector2& vector) { return Vector2(-vector._x, -vector._y); } Я выношу все крупные функции >1 строки...
C++ Не могу открыть программу на других компьютерах Здравствуйте! Написал програмку которая общается с SQLite и делает разные запросы к ней. У меня всё работает прекрасно! Но на других компахб когда я пытаюсь запустить скомпилированный exe, выскакивает окошко: Запуск программы невозможен, так как на компьютере отсутствует libgcc_s_sjli-1.dll. Попробуйте переустановить программу. Вот как я компилирую программу: g++ main.cpp classes/logs/*.h... http://www.cyberforum.ru/cpp-beginners/thread1188054.html
Три точки заданы координатами. Определить, лежат ли они на одной прямой C++
Задачи довольно простые. Я проста не разбираюсь в этом языке программирование. Проста срочно нужны решение. Думаю дальнейшем его изучить)Заранее спасибо. Задача 1 Три точки заданы координатами. Определить, лежат ли они на одной прямой.
Сумма в цикле C++
Просуммировать для какого - либо n в цикле. 1^2-3^2+5^2+...(-1)^n*(2*n+1)^2 Вот код цикла: for (i=1;i<=pow((-1),n)*pow((2*n+1),2);i=i+2) { result=result+i*i;
C++ Параллельные потоки и сегмент задачи http://www.cyberforum.ru/cpp-beginners/thread1188029.html
Здравствуйте. Вопрос абстрактный. Не совсем по с++, но так как пишу на с++ причём в Linux. Итак, известно что можно создать параллельный поток с помощью pthread_create(). Допустим я опишу функцию которая у меня будет в отдельном потоке в отдельном .cpp файле и я хочу, чтобы она видела некоторый массив об]явленный в файле main.cpp. Я делаю это через extern. Известно, что у потоков в одном процессе...
C++ Найти ошибку (max и min последовательности) В общем, вводится послед указанной длины(n) находится ср. арифмет.(average) max и min. После работы программы выдает, что max это какое то феерическое число типа 3.43553545335-e32423 , хотя вводятся обычные десятичные дроби. Помогите разобраться. // op21.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include <cmath> using namespace... подробнее

Показать сообщение отдельно
Distatic
0 / 0 / 0
Регистрация: 30.03.2014
Сообщений: 25

Программа, удаляющая провода и царапины с фотографий - C++

25.05.2014, 23:37. Просмотров 228. Ответов 0
Метки (Все метки)

Здравствуйте, пишу программу, которая позволит для начала удалять провода с фотографий.

Сам алгоритм довольно топорный:

будем удалять с картинки объекты, которые имеют:

1) ширину = 2% от ширины картинки
длину любую
2) ширину любую
длину = 2% от длины картинки

находим эти объекты, красим в цвет 255, затем закрашиваем белые пиксели в цвет соседних.

написал код (тоже топорно, но я только учусь), который зацикливается на том моменте, когда я пытаюсь закрасить провода в белый цвет, подскажите пожалуйста в чем причина?

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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
int main()
{
matr grey_first,
       grey_second;
 
        grey_first.loadBMPGrey("Picture\\Original\\original.bmp");
    grey_second.loadBMPGrey("Picture\\Original\\original.bmp");
      
        int step = 32;
 
        for (int x = 0; x < mx; x++)
    {
        for (int y = 0; y < my; y++)
        {
            grey_second.put(x, y, (grey_first.get(x, y) / step) * step);           
        }
    }
        
        int wid,
        hei;
 
        wid = (mx / 100) * 2;
    hei = (my / 100) * 2;
 
        int search_wid = 1,
        search_hei = 1,
        flag = 0,
//как раз тот кусок, который зацикливается
        for (int x = 0; x < mx; x++)
    {
            for (int y = 0; y < my; y++)
            {
                while (flag = 0)
                {
                    if ((grey_second.safeGet(x, y + flag_1)) == (grey_second.safeGet(x, y)))
                    {
                        search_hei++;
                        flag_1++;
                    }
 
                    else
                    {
                        flag = 1;
                        break;
                    }
                }
 
                cout<<"flag1="<<flag_1<<endl;
                flag=0;
 
                while (flag = 0)
                {
                    if ((grey_second.safeGet(x, y - flag_2)) == (grey_second.safeGet(x, y)))
                    {
                        search_hei++;
                        flag_2++;
                    }
 
                    else
                    {
                        flag = 1;
                        break;
                    }
                }
 
                cout<<"flag2="<<flag_2<<endl;
                flag=0;
 
                while (flag = 0)
                {
                    if ((grey_second.safeGet(x + flag_3, y)) == (grey_second.safeGet(x, y)))
                    {
                        search_wid++;
                        flag_3++;
                    }
 
                    else
                    {
                        flag = 1;
                        break;
                    }
                }
 
                cout<<"flag3="<<flag_3<<endl;
                flag=0;
 
                while (flag = 0)
                {
                    if ((grey_second.safeGet(x - flag_4, y)) == (grey_second.safeGet(x, y)))
                    {
                        search_wid++;
                        flag_4++;
                    }
 
                    else
                    {
                        flag = 1;
                        break;
                    }
                }
                                cout<<"flag4="<<flag_4<<endl;
 
 
                                if (((search_wid <= wid) && (search_hei > hei)) || ((search_wid > wid) && (search_hei <= hei)))
                    {
                        grey_second.safePut(x, y, 255);
                        
                    }
                
            }
    }
    // конец этого куска
    int repair;
 
 
       for (int x = 0; x < mx; x++)
    {
        for (int y = 0; y < my; y++)
        {
            if ((grey_second.safeGet(x, y)) == 255)
            {
                if ((grey_second.safeGet(x, y)) != (grey_second.safeGet(x, y - 1)))
                {
                    repair = grey_second.safeGet(x, y - 1);
                    grey_second.safePut(x, y, repair);
                }
 
                if((grey_second.safeGet(x, y)) != (grey_second.safeGet(x, y + 1)))
                {
                    repair = grey_second.safeGet(x, y + 1);
                    grey_second.safePut(x, y, repair);
                }
 
                if((grey_second.safeGet(x, y)) != (grey_second.safeGet(x - 1, y)))
                {
                    repair = grey_second.safeGet(x - 1, y);
                    grey_second.safePut(x, y, repair);
                }
 
                if((grey_second.safeGet(x, y)) != (grey_second.safeGet(x + 1, y)))
                {
                    repair = grey_second.safeGet(x + 1, y);
                    grey_second.safePut(x, y, repair);
                }
            }
        }
    }
 
        grey_first.saveBMPGrey("Picture\\grey_first.bmp");
    grey_second.saveBMPGrey("Picture\\grey_second.bmp");
 
        system("PAUSE");
    return EXIT_SUCCESS;
    }
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru