Advertisement
Guest User

Untitled

a guest
Apr 2nd, 2020
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. void lab6_1_2() {
  2.  
  3. char fname[MAX_PATH];
  4. openFileDlg(fname);
  5. Mat_<uchar> img = imread(fname, CV_LOAD_IMAGE_GRAYSCALE);
  6.  
  7. int label = 0, height = img.rows, width = img.cols;
  8. std::cout << height << " " << width << "\n";
  9.  
  10. std::vector<std::vector<int>> labels(height, std::vector<int>(width, 0));
  11. labels = getLabels(img, label, height, width, 8);
  12.  
  13. int dir = 7;
  14. int et = 1;
  15. bool one = true;
  16. Mat_<uchar> newImg(height, width,255);
  17. std::vector<int> cod;
  18. int di[8] = { 0,-1, -1, -1,0,1,1,1 };
  19. int dj[8] = { 1,1,0,-1,-1,-1,0,1 };
  20. for (int i = 0; i < height; i++) {
  21. for (int j = 0; j < width; j++) {
  22. if (labels[i][j] != 0 && labels[i][j] == et) {
  23. int pi = i;
  24. int pj = j;
  25. if (one == true) {
  26. std::cout << "x:" << i << " y:" << j << std::endl;
  27. one = false;
  28. }
  29. Point p0(pi, pj);
  30. newImg(pi, pj) = labels[pi][pj];
  31. Point pn(-2, -2), pn1 = (-3, -3);
  32. dir = (dir % 2 == 0) ? (dir + 7) % 8 : (dir + 6) % 8;
  33. bool ok = false;
  34. getPixels(dir, pi, pj, di, dj, labels, img, ok, et);
  35. newImg(pi, pj) = labels[pi][pj];
  36. Point p1 = Point(pi, pj);
  37. if (ok == false) {
  38. et++;
  39. break;
  40. }
  41. do {
  42. cod.push_back(dir);
  43. dir = (dir % 2 == 0) ? (dir + 7) % 8 : (dir + 6) % 8;
  44. getPixels(dir, pi, pj, di, dj, labels, img, ok, et);
  45. newImg(pi, pj) = labels[pi][pj];
  46. pn1 = pn;
  47. pn = Point(pi, pj);
  48. } while (p0 != pn1 && p1 != pn);
  49. et++;
  50. }
  51. }
  52. }
  53.  
  54. cod.pop_back();
  55. for each (int var in cod)
  56. {
  57. std::cout << var<<" ";
  58. }
  59. printf("\n\n");
  60. for (int i = 0; i < cod.size() - 1; i++)
  61. {
  62. if (cod[i] > cod[i + 1]) {
  63. printf("%d ", 8 - (cod[i] - cod[i + 1]));
  64. }
  65. else {
  66. printf("%d ", abs(cod[i] - cod[i + 1]));
  67. }
  68. }
  69. printf("\n\n");
  70. imshow("original", img);
  71. imshow("contur", newImg);
  72. waitKey(0);
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement