Advertisement
Guest User

Untitled

a guest
Jan 18th, 2020
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.33 KB | None | 0 0
  1. #include "cuda_runtime.h"
  2. #include "device_launch_parameters.h"
  3. #include <stdio.h>
  4. #include "opencv2/core.hpp"
  5. #include "opencv2/imgproc.hpp"
  6. #include "opencv2/highgui.hpp"
  7.  
  8.  
  9.  
  10.  
  11. #include <iostream>
  12.  
  13. using namespace std;
  14. using namespace cv;
  15.  
  16. __global__ void cojestkurwa(int col) {
  17.  
  18.  
  19. }
  20.  
  21.  
  22. __global__ void kernel_scale_up(unsigned char* img, int col, int row) {
  23.  
  24.  
  25. cv::Mat help = cv::Mat(row, col, CV_8UC1, *img);
  26.  
  27. int scale_percent = 200; // percent of original size
  28. int width = int(help.rows * scale_percent / 100);
  29. int height = int(help.cols * scale_percent / 100);
  30.  
  31. img = help.data;
  32. }
  33.  
  34.  
  35. /*
  36. * Scale up image
  37. */
  38. Mat scale_up(Mat img)
  39. {
  40. int scale_percent = 200; // percent of original size
  41. int width = int(img.rows * scale_percent / 100);
  42. int height = int(img.cols * scale_percent / 100);
  43. //resize image
  44. img.resize(width, height);
  45. return img;
  46. }
  47. /*
  48. * Scale down image
  49. */
  50. Mat scale_down(Mat img)
  51. {
  52. int scale_percent = 50; // percent of original size
  53. int width = int(img.rows * scale_percent / 100);
  54. int height = int(img.cols * scale_percent / 100);
  55. //resize image
  56. img.resize(width, height);
  57. return img;
  58. }
  59.  
  60. /*
  61. * Box filter image
  62. */
  63. Mat filter_img(Mat img)
  64. {
  65. cv::Mat mask = cv::Mat::zeros(img.size(), img.type());
  66. cv::Mat dstImage = cv::Mat::zeros(img.size(), img.type());
  67. cv::circle(mask, cv::Point(mask.rows / 2, mask.cols / 2), 50, cv::Scalar(255, 0, 0), -1, 8, 0);
  68. img.copyTo(dstImage, mask);
  69.  
  70. return img;
  71. }
  72. /*
  73. *Write menu
  74. */
  75. void write_menu()
  76. {
  77. cout << "What do You want to do with images?" << endl
  78. << "Rotate left, select 1" << endl
  79. << "Rotate right, select 2" << endl
  80. << "Scale up, select 3" << endl
  81. << "Scale down(make miniatures), select 4" << endl
  82. << "Use funny filter, select 5" << endl
  83. << "Remember other values are invalid!" << endl;
  84. }
  85. int main()
  86. {
  87. cojestkurwa << <1, 1 >> > (2);
  88.  
  89. std::cout << "Hello World!\n";
  90. cv::String path("noga.jpeg"); //select only jpg
  91. vector<cv::String> fn;
  92. vector<cv::Mat> data;
  93.  
  94. std::cout << path << endl;
  95. glob(path, fn, true); // recurse
  96. std::cout << fn.size() << endl;
  97.  
  98. int selection;
  99. do {
  100. write_menu();
  101. cin >> selection;
  102. } while (selection > 5 || selection < 1);
  103.  
  104. std::cout << fn.size() << endl;
  105. for (size_t k = 0; k < fn.size(); ++k)
  106. {
  107.  
  108. cv::Mat im = imread(fn[k]);
  109. std::cout << fn[k] << endl;
  110. if (im.empty()) continue; //only proceed if sucsessful
  111.  
  112. //namedWindow("Display window", WINDOW_AUTOSIZE);// Create a window for display.
  113. //imshow("Display window", im); // Show our image inside it.
  114.  
  115. switch (selection) {
  116. case 1:
  117. rotate(im, im, ROTATE_90_COUNTERCLOCKWISE);
  118. break;
  119. case 2:
  120. rotate(im, im, ROTATE_90_CLOCKWISE);
  121. break;
  122. case 3:
  123. const int imgsize = im.cols * im.rows;
  124. unsigned char* cuda_im;
  125.  
  126. cudaMalloc<unsigned char>(&cuda_im, imgsize);
  127. cudaMemcpy(cuda_im, im.ptr(), imgsize, cudaMemcpyHostToDevice);
  128. int kolumny = im.cols;
  129. int wiersze = im.rows;
  130.  
  131. //kernel_scale_up <<<1, 10>>> (cuda_im, im.cols, im.rows);
  132.  
  133. cudaMemcpy(im.ptr(), cuda_im, imgsize, cudaMemcpyDeviceToHost);
  134.  
  135. free(cuda_im);
  136. break;
  137. case 4:
  138. scale_down(im);
  139. break;
  140. case 5:
  141. filter_img(im);
  142. break;
  143. default:
  144. cout << "Operation not supported!" << endl;
  145. }
  146. imwrite(fn[k], im);
  147. data.push_back(im);
  148. }
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement