Advertisement
Guest User

Untitled

a guest
Mar 30th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.62 KB | None | 0 0
  1. #include <opencv2/opencv.hpp>
  2. using namespace cv;
  3.  
  4. const int alpha_slider_max = 100;
  5. int alpha_slider;
  6. double alpha;
  7. double beta;
  8.  
  9. /// Matrices to store images
  10. Mat src1;
  11. Mat src2;
  12. Mat dst;
  13.  
  14. void show_histogram(std::string const& name, cv::Mat1b const& image)
  15. {
  16. // Set histogram bins count
  17. int bins = 256;
  18. int histSize[] = { bins };
  19. // Set ranges for histogram bins
  20. float lranges[] = { 0, 256 };
  21. const float* ranges[] = { lranges };
  22. // create matrix for histogram
  23. cv::Mat hist;
  24. int channels[] = { 0 };
  25.  
  26. // create matrix for histogram visualization
  27. int const hist_height = 256;
  28. cv::Mat3b hist_image = cv::Mat3b::zeros(hist_height, bins);
  29.  
  30. cv::calcHist(&image, 1, channels, cv::Mat(), hist, 1, histSize, ranges, true, false);
  31.  
  32. double max_val = 0;
  33. minMaxLoc(hist, 0, &max_val);
  34.  
  35. // visualize each bin
  36. for (int b = 0; b < bins; b++) {
  37. float const binVal = hist.at<float>(b);
  38. int const height = cvRound(binVal*hist_height / max_val);
  39. cv::line
  40. (hist_image
  41. , cv::Point(b, hist_height - height), cv::Point(b, hist_height)
  42. , cv::Scalar::all(255)
  43. );
  44. }
  45. cv::imshow(name, hist_image);
  46. imwrite(name+"jpg",hist_image);
  47. }
  48.  
  49. void on_trackbar(int, void*)
  50. {
  51. alpha = (double)alpha_slider / alpha_slider_max;
  52. beta = (1.0 - alpha);
  53.  
  54. addWeighted(src1, alpha, src2, beta, 0.0, dst);
  55.  
  56. imshow("Linear Blend", dst);
  57. }
  58.  
  59. Mat erozja(const Mat& image,int type,int size){
  60. Mat dst;
  61. Mat element = getStructuringElement(type, Size(2 * size + 1, 2 * size + 1),Point(size, size));
  62. erode(image, dst, element);
  63. return dst;
  64. }
  65.  
  66. Mat dylatacja(const Mat& image, int type, int size){
  67. Mat dst;
  68. Mat element = getStructuringElement(type, Size(2 * size + 1, 2 * size + 1), Point(size, size));
  69. dilate(image, dst, element);
  70. return dst;
  71. }
  72.  
  73. int main(int argc, char* argv[])
  74. {
  75. Mat img = imread("Lena.png", CV_LOAD_IMAGE_COLOR);
  76. src1 = imread("Lena.png", CV_LOAD_IMAGE_COLOR);
  77. src2 = imread("kot.jpg", CV_LOAD_IMAGE_COLOR);
  78.  
  79. imshow("Original",img);
  80.  
  81. Mat gray_image;
  82. cvtColor( img, gray_image, CV_BGR2GRAY );
  83.  
  84. //grayscale
  85. imshow("Gray scale",gray_image);
  86. show_histogram("Histogram gray", gray_image);
  87. imwrite("Gray_image.jpg",gray_image);
  88.  
  89. Mat img_clone = gray_image.clone();
  90.  
  91. //equalized
  92. Mat hist_dest;
  93. equalizeHist( img_clone, hist_dest );
  94. imshow("Equalized image",hist_dest);
  95. show_histogram("Equalized histogram", hist_dest);
  96. imwrite("Equalized_image.jpg",hist_dest);
  97.  
  98. //normalized
  99. Mat normalized;
  100. normalize(gray_image,normalized,0,255,CV_MINMAX);
  101. imshow("Normalized image", normalized);
  102. show_histogram("Normalized histogram", normalized);
  103. imwrite("Normalized_image.jpg", normalized);
  104.  
  105.  
  106.  
  107. if( !src1.data ) { printf("Error loading src1 \n"); return -1; }
  108. if( !src2.data ) { printf("Error loading src2 \n"); return -1; }
  109. /// Initialize values
  110. alpha_slider = 0;
  111.  
  112. /// Create Windows
  113. namedWindow("Linear Blend", 1);
  114. char TrackbarName[50];
  115. sprintf( TrackbarName, "Alpha x %d", alpha_slider_max );
  116.  
  117. createTrackbar( TrackbarName, "Linear Blend", &alpha_slider, alpha_slider_max, on_trackbar );
  118.  
  119. /// Show some stuff
  120. on_trackbar( alpha_slider, 0 );
  121.  
  122.  
  123. Mat rice = imread("rice-noise.jpg", CV_LOAD_IMAGE_COLOR);
  124. Mat rice_clean;
  125. Mat rice_grey;
  126.  
  127.  
  128.  
  129. //MEDIAN
  130. medianBlur(rice, rice_clean, 5);
  131. imshow("Source", rice);
  132. imshow("Clean", rice_clean);
  133. imwrite("MedianBlur.jpg",rice_clean);
  134.  
  135. Mat rice_clean_gaus;
  136. //GAUSIAN
  137. GaussianBlur(rice, rice_clean_gaus, Size(15, 15), 0, 0);
  138. imshow("Source", rice);
  139. imshow("Clean", rice_clean_gaus);
  140. imwrite("GaussianBlur.jpg",rice_clean_gaus);
  141.  
  142. cvtColor(rice_clean_gaus, rice, CV_BGR2GRAY);
  143.  
  144.  
  145. threshold(rice, rice_clean, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);
  146. imshow("Source", rice);
  147. imshow("Clean", rice_clean);
  148. imwrite("Otsu.jpg",rice_clean);
  149.  
  150. Mat erode_image = erozja(gray_image, MORPH_ELLIPSE, 3);
  151. imshow("Erode Ellipse", erode_image);
  152. imwrite("Erode_ellipse.jpg",erode_image);
  153.  
  154. erode_image = erozja(gray_image, MORPH_CROSS, 3);
  155. imshow("Erode Cross", erode_image);
  156. imwrite("Erode_cross.jpg", erode_image);
  157.  
  158. erode_image = erozja(gray_image, MORPH_RECT, 3);
  159. imshow("Erode Rect", erode_image);
  160. imwrite("Erode_rect.jpg", erode_image);
  161.  
  162. Mat dilate_image = dylatacja(gray_image,MORPH_CROSS,3);
  163. imshow("Dilate Cross", dilate_image);
  164. imwrite("Dilate_cross.jpg", dilate_image);
  165.  
  166. dilate_image = dylatacja(gray_image, MORPH_ELLIPSE, 3);
  167. imshow("Dilate Ellipse", dilate_image);
  168. imwrite("Dilate_ellipse.jpg", dilate_image);
  169.  
  170. dilate_image = dylatacja(gray_image, MORPH_RECT, 3);
  171. imshow("Dilate Rect", dilate_image);
  172. imwrite("Dilate_rect.jpg", dilate_image);
  173.  
  174. waitKey(0);
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement