Advertisement
Guest User

Untitled

a guest
Apr 6th, 2020
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.48 KB | None | 0 0
  1. void regionFilling() {
  2.  
  3.     char fname[MAX_PATH];
  4.     for (; openFileDlg(fname); ) {
  5.  
  6.         auto src = imread(fname, CV_LOAD_IMAGE_GRAYSCALE);
  7.         imshow("Original Image", src);
  8.  
  9.         //vectori de directie
  10.         int di[8] = { 0, -1, -1, -1,  0,  1, 1, 1 };
  11.         int dj[8] = { 1,  1,  0, -1, -1, -1, 0, 1 };
  12.  
  13.         auto complement = complementMatrix(src);
  14.         auto prevRes = Mat(src.size(), CV_8UC1);
  15.         auto res = Mat(src.size(), CV_8UC1);
  16.  
  17.         for (int i = 0; i < src.rows; ++i)
  18.             for (int j = 0; j < src.cols; ++j)
  19.                 prevRes.at<uchar>(i, j) = res.at<uchar>(i, j) = 255;
  20.  
  21.         //Find inner pixel
  22.         bool find = false;
  23.         for (int i = 1; i < src.rows; ++i)
  24.             for (int j = 1; j < src.cols; ++j) {
  25.  
  26.                 if (!src.at<uchar>(i, j - 1) &&
  27.                     !src.at<uchar>(i - 1, j) &&
  28.                     src.at<uchar>(i, j)) {
  29.  
  30.                     res.at<uchar>(i, j) = 0;
  31.                     find = true;
  32.                     break;
  33.  
  34.                 }
  35.  
  36.                 if (find)
  37.                     break;
  38.  
  39.             }
  40.  
  41.         bool rtrn = false;
  42.  
  43.         //for (int k = 0; !rtrn && k == 100; ++k){
  44.         for( ; !rtrn ; ){
  45.  
  46.             ///Conditie de iesire
  47.             rtrn = true;
  48.             for (int i = 0; i < src.rows; ++i)
  49.                 for (int j = 0; j < src.cols; ++j)
  50.                     if (res.at<uchar>(i, j) != prevRes.at<uchar>(i, j))
  51.                         rtrn = false;
  52.  
  53.             ///Update
  54.             for (int i = 0; i < src.rows; ++i)
  55.                 for (int j = 0; j < src.cols; ++j)
  56.                     prevRes.at<uchar>(i, j) = res.at<uchar>(i, j);
  57.  
  58.             ///Operatii morfologice
  59.             auto temp = dilatationMatrix(prevRes);
  60.             res = setIntersect(temp, complement);
  61.  
  62.         }
  63.  
  64.         imshow("Result", res);
  65.         waitKey(0);
  66.  
  67.     }
  68.  
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement