Facebook
From Buff Prairie Dog, 5 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 330
  1. #include <stdlib.h>  
  2.  
  3. int compare(const void * a, const void * b)
  4. {
  5.         return (*(int*)a - *(int*)b);
  6. }
  7.  
  8. uchar median(cv::Mat image, int rec_size)
  9. {
  10.         uchar* tab = new uchar[rec_size*rec_size];
  11.         int tmp = 0;
  12.         for (int i = -rec_size / 2; i < rec_size / 2; i++)
  13.         {
  14.                 for (int j = -rec_size / 2; j < rec_size / 2; j++)
  15.                 {
  16.                         tab[tmp] = image.at<uchar>(j, i);
  17.                         tmp += 1;
  18.                 }
  19.         }
  20.  
  21.         qsort(tab, rec_size*rec_size, sizeof(uchar), compare);
  22.  
  23.         uchar med;
  24.         if (rec_size*rec_size % 2 == 0)
  25.         {
  26.                 med = (tab[rec_size / 2] + tab[rec_size / 2 + 1]) / 2;
  27.         }
  28.         else
  29.         {
  30.                 med = tab[rec_size / 2];
  31.         }
  32.  
  33.         return med;
  34. }
  35. void filter(cv::Mat& image, int a)
  36. {
  37.         for (int i = a / 2; i < image.cols - a / 2; i++)
  38.         {
  39.                 for (int j = a / 2; j < image.rows - a / 2; j++)
  40.                 {
  41.                         image.at<uchar>(j, i) = median(image, a);
  42.                 }
  43.         }
  44. }
  45.  
  46. int main()
  47. {
  48.         std::string img_path = "C:\[..]\lena.png";
  49.  
  50.         cv::Mat img = cv::imread(img_path);
  51.  
  52.         int rozmiar;
  53.  
  54.         filter(img, rozmiar);
  55.         img.release();
  56.         cv::destroyAllWindows();
  57.         return 0;
  58. }
  59.  

Replies to Untitled rss

Title Name Language When
Re: Untitled Cream Hog cpp 5 Years ago.