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

Opencv-gabor filter не сохраняет результирующую картинку - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывести на экран в текущем каталоге имена тех каталогов, которые в себе не содержат подкаталогов http://www.cyberforum.ru/cpp-beginners/thread1304634.html
Здравствуйте.. Выдали данное задание на С++ под linux Разработать программу, которая выводит на экран в текущем каталоге имена тех каталогов, которые в себе не содержат подкаталогов. Вариантов решения нет вообще , т.к с такими заданиями не сталкивался, может ктото интересовался данным вопросом или есть наброски буду рад
C++ Генератор массива случайных чисел Есть массив, хочу заполнить его случайными числами, причем с каждым запуском числа должны быть разные, поэтому просто rand() не прокатит. Добавил srand(timeINULL)); и теперь весь массив заполняется одним и тем же числом, правда каждый раз разным.. как это исправить? for (i = 0; i < SIZE; i++) { srand(time(NULL)); a = 3 + rand() % 200; } http://www.cyberforum.ru/cpp-beginners/thread1304629.html
Сортировка столбцов матрицы по убыванию C++
Пусть пользователь вводит динамическую матрицу размеров м*м написать функцию для сортировки столбцов матрицы по убыванию
Первый язык программирования на подходе к С++: Паскаль или С? C++
Привет всем) Думаю что похожие темы уже были. Я решил изучать программирование.Начал с Паскаля но хочу взять за основу C++. И недавно прочитал на одном форуме мол паскаль можно пропускать и изучать сразу С++. Теперь я в растерянности что делать дальше?!Изучать паскаль или все же начать уже изучать С++? Пожалуйста помогите разобраться в этом вопросе.Просто желание дикое есть изучать...
C++ Как разместить два игровых поля морского боя в ряд по горизонтали? http://www.cyberforum.ru/cpp-beginners/thread1304605.html
Два квадратика в рядочек) Привет, простенький вопрос. Делаю жалкие попытки написать консольный морской бой (знаю-знаю, ссылки уже читал). Вобщем вопрос такой: есть у меня функция, которая выводит на экран два игровых поля, и у меня не хватает мозга поставить их по горизонтали..есно по вертикали стоят хорошо)) итак, код в студию: void print()//функция вывода игрового поля на экран
C++ Сгенерировать случайные числа без повторений Нужно выбрать 8 чисел в диапазоне от 1 до 16 включительно, чтоб они не повторялись. и записать в массив.НЕ понимаю как задать условие чтобы не повторялись числа подробнее

Показать сообщение отдельно
snowleo
14 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 15
19.11.2014, 01:42     Opencv-gabor filter не сохраняет результирующую картинку
Здравствуйте. Мне необходим фильтр Габора. Нашел реализацию в инете, но не получается сохранить результат. Т.е. картинка то сохраняется, но она просто заполнена черным цветом.
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
#include "stdafx.h"
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <math.h>
 
      cv::Mat mkKernel(int ks, double sig, double th, double lm, double ps)
      {
          int hks = (ks-1)/2;
          double theta = th*CV_PI/180;
          double psi = ps*CV_PI/180;
          double del = 2.0/(ks-1);
          double lmbd = lm;
          double sigma = sig/ks;
          double x_theta;
          double y_theta;
          cv::Mat kernel(ks,ks, CV_32F);
          for (int y=-hks; y<=hks; y++)
          {
              for (int x=-hks; x<=hks; x++)
              {
                  x_theta = x*del*cos(theta)+y*del*sin(theta);
                  y_theta = -x*del*sin(theta)+y*del*cos(theta);
                  kernel.at<float>(hks+y,hks+x) = (float)exp(-0.5*(pow(x_theta,2)+pow(y_theta,2))/pow(sigma,2))* cos(2*CV_PI*x_theta/lmbd + psi);
              }
          }
          return kernel;
      }
 
      int kernel_size=21;
      int pos_sigma= 4;
      int pos_lm = 37;
      int pos_th = 0;
      int pos_psi = 78;
      cv::Mat src_f;
      cv::Mat dest;
      cv::Mat image;
 
      void Process(int , void *)
      {
          double sig = pos_sigma;
          double lm = 0.5+pos_lm/100.0;
          double th = pos_th;
          double ps = pos_psi;
          cv::Mat kernel = mkKernel(kernel_size, sig, th, lm, ps);
          cv::filter2D(src_f, dest, CV_32F, kernel);
          //cv::imshow("Process window", dest);
          cv::Mat Lkernel(kernel_size*20, kernel_size*20, CV_32F);
          cv::resize(kernel, Lkernel, Lkernel.size());
          Lkernel /= 2.;
          Lkernel += 0.5;
          //cv::imshow("Kernel", Lkernel);
          cv::Mat mag;
          cv::pow(dest, 2.0, mag);
          cv::imshow("Mag", mag);
          //IplImage* image1 = cvCloneImage(&(IplImage)mag);
          //cvSaveImage("gab.bmp", image1, NULL);
         cv::imwrite("gab.bmp", mag);
      }
 
      int main(int argc, char** argv)
      {
          int e = argc;
          char st[_MAX_PATH];
          strcpy(st, argv[1]);
          image = cv::imread(st, 1);
          //cv::imshow("Src", image);
          //cv::Mat src;
          //cv::cvtColor(image, src, CV_BGR2GRAY);
          image.convertTo(src_f, CV_32F, 1.0/255, 0);
          if (!kernel_size%2)
          {
              kernel_size+=1;
          }
          //cv::namedWindow("Process window", 0);
          //cv::createTrackbar("Sigma", "Process window", &pos_sigma, kernel_size, Process);
          //cv::createTrackbar("Lambda", "Process window", &pos_lm, 100, Process);
          //cv::createTrackbar("Theta", "Process window", &pos_th, 180, Process);
          //cv::createTrackbar("Psi", "Process window", &pos_psi, 360, Process);
          Process(0,0);
          cv::waitKey(0);
          return 0;
      }
Подозреваю, что дело в функции convertTo().
Подскажите, как нормально сохранить результат.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru