Advertisement
Guest User

Untitled

a guest
Nov 19th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. #include<opencv2/opencv.hpp>
  2. #include<iostream>
  3. using namespace std;
  4. using namespace cv;
  5.  
  6. static int img_height = 822;//822
  7. static int img_width = 616;//616
  8.  
  9.  
  10.  
  11. int main()
  12. {
  13. TickMeter tm_2;
  14. TickMeter tm_3;
  15. tm_2.reset();
  16. tm_3.reset();
  17.  
  18.  
  19. Mat img_master = imread("Master2.jpg", 0);
  20. //namedWindow("I", WINDOW_AUTOSIZE);
  21.  
  22. Mat roi;
  23. Rect window;
  24.  
  25. Mat img_filter = img_master.clone();
  26.  
  27. Mat img_blur;
  28.  
  29. int summ = 0;
  30. double sigma = 5;
  31. int filter_value = 0;
  32. double gauss_value[21][21];
  33. double dif = 0;
  34. double dif1 = 0;
  35. double procent;
  36.  
  37. tm_3.start();
  38. blur(img_master, img_blur, Size(3, 3));
  39. tm_3.stop();
  40.  
  41. for (int i = -10; i < 11; i++)
  42. {
  43. for (int j = -10; j < 11; j++)
  44. {
  45. gauss_value[i][j] =100000* (-(i * exp(-(i * i) / (2 * sigma * sigma))) / (3.14 * sigma * sigma)) * (-(j * exp(-(j * j) / (2 * sigma * sigma))) / (3.14 * sigma * sigma));
  46. //gauss_value[i][j] = (-(j * exp(-(j * j) / (2 * sigma * sigma))) / (3.14 * sigma * sigma));
  47. cout << gauss_value[i][j] << " | " << endl;
  48. //waitKey(5);
  49. }
  50. //cout << endl;
  51. }
  52.  
  53. tm_2.start();
  54.  
  55. for (int y = 0; y < (img_height - 20); y++)
  56. {
  57. for (int x = 0; x < (img_width - 20); x++)
  58. {
  59. Rect window(x, y, 21, 21);
  60. roi = img_master(window);
  61.  
  62. for (int i = 0; i < 21; i++)
  63. {
  64. for (int j = 0; j < 21; j++)
  65. {
  66. summ += (int)(roi.at<uchar>(i, j)* gauss_value[i][j]);
  67. }
  68. }
  69.  
  70. filter_value = summ / 441;
  71.  
  72. img_filter.at<uchar>(Point(x + 10, y + 10)) = (uchar)filter_value;
  73.  
  74. //cout << filter_value << endl;
  75. //waitKey(5);
  76. summ = 0;
  77. }
  78. }
  79.  
  80. tm_2.stop();
  81.  
  82. procent = dif1 / (img_height * img_width);
  83.  
  84. cout << "timer_3 = " << tm_3.getTimeSec() << endl;
  85. cout << "timer_2 = " << tm_2.getTimeSec() << endl;
  86. cout << "dif = " << procent << endl;
  87.  
  88. imshow("I", img_master);
  89. imshow("II", img_filter);
  90. //imshow("III", img_blur);
  91.  
  92. waitKey(0);
  93. return 0;
  94. }
  95.  
  96.  
  97. // Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
  98. // Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
  99.  
  100. // Советы по началу работы
  101. // 1. В окне обозревателя решений можно добавлять файлы и управлять ими.
  102. // 2. В окне Team Explorer можно подключиться к системе управления версиями.
  103. // 3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
  104. // 4. В окне "Список ошибок" можно просматривать ошибки.
  105. // 5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
  106. // 6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement