Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
twinkle93
0 / 0 / 1
Регистрация: 20.03.2015
Сообщений: 8
#1

Opencv на C++, код для нелинейного преобразования - C++

27.03.2015, 12:03. Просмотров 327. Ответов 7
Метки нет (Все метки)

Помогите написать код с синусоидальным преобразованием изображения. Как показано на картинке
Справился лишь с линейным:
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
int main()
{
    IplImage * src = cvLoadImage ("d:\\programming\\123.jpg");
    CvSize size = cvGetSize(src);
    IplImage * dst = cvCreateImage (size,8,3);
    float A = 1.0f;
    float B = 0;
 
    while(true)
    {
        for (int x=0;x<size.width; x++)
            for(int y=0;y<size.height;y++)
            {
                CvScalar f = cvGet2D(src,y,x);
                CvScalar g;
                
                g.val[0] = A*f.val[0]+B;
                g.val[1] = A*f.val[1]+B;
                g.val[2] = A*f.val[2]+B;
                
                cvSet2D(dst,y,x,g);
            }
 
        cvShowImage("dst",dst);
 
        int key = cvWaitKey();
        
 
        switch(key)
        
        {
            case '1': B+=10; break;
            case '2': B-=10; break;
            case '3': A+=0.1f; break;
            case '4': A-=0.1f; break;
            default: break;
        }
                
    }
    cvShowImage ("src",src);
 
    return 0;
}

http://www.cyberforum.ru/cpp-beginners/thread1909566.html
0
Миниатюры
Opencv на C++, код для нелинейного преобразования  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2015, 12:03
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Opencv на C++, код для нелинейного преобразования (C++):

OpenCV C++ vs2010 error C2446: :: нет преобразования "const char *" в "_TCHAR *"
Добрый день уважаемые форумчане. Столкнулся с небольшой проблемой. Выбивает...

Почему код не компиллируется без преобразования
class A { public: void foo() { } }; class B : public A { };

Для заданного нелинейного уравнения
Для заданного нелинейного уравнения: x−sin(x)=4 выполнить следующие действия:...

Программы для решения нелинейного уравнения
Здравствуйте товарищи программисты. У меня к вам просьба. У меня есть две...

Поясните как работает код преобразования текстового представления числа в int
int chToInt(char *temp) { int i = 0; int result = 0; int a; while (temp...

7
aLarman
644 / 565 / 164
Регистрация: 13.12.2012
Сообщений: 2,112
Завершенные тесты: 1
27.03.2015, 12:12 #2
наверное как то так
C++
1
2
g.val[0] = f.val[0]*sin(f.val[0]);
g.val[0] = f.val[0]*sin(x);// или так
0
twinkle93
0 / 0 / 1
Регистрация: 20.03.2015
Сообщений: 8
27.03.2015, 12:32  [ТС] #3
aLarman, спасибо, а что нужно вписать, чтобы при нажатии клавиши увеличивать или уменьшать чистоту?
0
aLarman
644 / 565 / 164
Регистрация: 13.12.2012
Сообщений: 2,112
Завершенные тесты: 1
27.03.2015, 12:51 #4
C++
1
sin(f*x);
f - изменять по нажатию клавиши
1
twinkle93
0 / 0 / 1
Регистрация: 20.03.2015
Сообщений: 8
27.03.2015, 13:39  [ТС] #5
aLarman, не могли бы вы по подробнее написать, если вас не затруднит? я в программировании полный ноль, можно сказать D вот что у меня получилось после ваших советов
0
Миниатюры
Opencv на C++, код для нелинейного преобразования  
aLarman
644 / 565 / 164
Регистрация: 13.12.2012
Сообщений: 2,112
Завершенные тесты: 1
27.03.2015, 13:43 #6
Цитата Сообщение от twinkle93 Посмотреть сообщение
aLarman, не могли бы вы по подробнее написать, если вас не затруднит? я в программировании полный ноль, можно сказать D вот что у меня получилось после ваших советов
ну наверняка это правильно, я просто хз точно как нелин.преобразование провести с sin, и в чем смысл этого
ну по крайней мере вариант
sin(f.val[0]) будет не верно, потому что значения пикселей - целое число, ну вот и получается вся картинка превртится или в -1(изза того что значение пикселя беззнаковое будет 255 т.е макс), или в 0 или в 1.
1
twinkle93
0 / 0 / 1
Регистрация: 20.03.2015
Сообщений: 8
27.03.2015, 15:21  [ТС] #7
aLarman, а возможно ли преобразовать изображение в негатив, чтобы график был как на первом рисунке? Прощу прощения за столько вопросов
0
aLarman
644 / 565 / 164
Регистрация: 13.12.2012
Сообщений: 2,112
Завершенные тесты: 1
27.03.2015, 16:05 #8
Цитата Сообщение от twinkle93 Посмотреть сообщение
а возможно ли преобразовать изображение в негатив, чтобы график был как на первом рисунке?
ну да, наверняка есть ф-ци в либе, если нет то
C++
1
255-f.val[0]
вроде
0
27.03.2015, 16:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2015, 16:05
Привет! Вот еще темы с решениями:

Метод Ньютона и итераций для нелинейного уравнения
Всем доброго времени суток) Помогите реализовать программу на С++ решающую...

Метод итераций для развязывания нелинейного уравнения
- развязать заданое уравнение с точностью е = е (i – 1) / 10^(-3), і = 1, 2,...

Использование OpenCV для распознавания рисунков
Работаю с библиотекой OpenCV и активно использую функции распознования...

Где скачать бинарник haartraining для opencv
Где скачать бинарник haartraining для opencv ?


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru