Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 6th, 2012  |  syntax: None  |  size: 2.53 KB  |  hits: 32  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. OpenCV distance transform outputting an image that looks exactly like the input image
  2. cvSetData(depthImage, m_rgbWk, depthImage->widthStep);
  3.  
  4. //gotten openCV image in "depthImage"          
  5.  
  6. IplImage *single_channel_depthImage = cvCreateImage(cvSize(320, 240), 8, 1);
  7. cvSplit(depthImage, single_channel_depthImage, NULL, NULL, NULL);
  8.  
  9. //smoothing
  10. IplImage *smoothed_image = cvCreateImage(cvSize(320, 240), 8, 1);
  11. cvSmooth(single_channel_depthImage, smoothed_image, CV_MEDIAN, 9, 9, 0, 0);
  12.  
  13. //do canny edge detector
  14. IplImage *edges_image = cvCreateImage(cvSize(320, 240), 8, 1);
  15. cvCanny(smoothed_image, edges_image, 100, 200);
  16.  
  17. //invert values
  18. IplImage *inverted_edges_image = cvCreateImage(cvSize(320, 240), 8, 1);
  19. cvNot(edges_image, inverted_edges_image);
  20.  
  21. //calculate the distance transform
  22. IplImage *distance_image = cvCreateImage(cvSize(320, 240), IPL_DEPTH_32F, 1);
  23. cvZero(distance_image);
  24.  
  25. cvDistTransform(inverted_edges_image, distance_image, CV_DIST_L2, CV_DIST_MASK_PRECISE, NULL, NULL);
  26.        
  27. #include <opencv2/core/core.hpp>
  28. #include <opencv2/highgui/highgui.hpp>
  29. #include <opencv2/imgproc/imgproc.hpp>
  30. #include <iostream>
  31.  
  32. using namespace std;
  33. using namespace cv;
  34.  
  35. int main(int argc, char** argv)
  36. {
  37.     Mat before = imread("qrcode.png", 0);
  38.  
  39.     Mat dist;
  40.     distanceTransform(before, dist, CV_DIST_L2, 3);
  41.  
  42.     imshow("before", before);
  43.     imshow("non-normalized", dist);
  44.  
  45.     normalize(dist, dist, 0.0, 1.0, NORM_MINMAX);
  46.     imshow("normalized", dist);
  47.     waitKey();
  48.     return 0;
  49. }
  50.        
  51. [10.954346, 10.540054, 10.125763, 9.7114716, 9.2971802, 8.8828888, 8.4685974, 8.054306, 7.6400146, 7.6400146;
  52.   10.540054, 9.5850525, 9.1707611, 8.7564697, 8.3421783, 7.927887, 7.5135956, 7.0993042, 6.6850128, 6.6850128;
  53.   10.125763, 9.1707611, 8.2157593, 7.8014679, 7.3871765, 6.9728851, 6.5585938, 6.1443024, 5.730011, 5.730011;
  54.   9.7114716, 8.7564697, 7.8014679, 6.8464661, 6.4321747, 6.0178833, 5.6035919, 5.1893005, 4.7750092, 4.7750092;
  55.   9.2971802, 8.3421783, 7.3871765, 6.4321747, 5.4771729, 5.0628815, 4.6485901, 4.2342987, 3.8200073, 3.8200073;
  56.   8.8828888, 7.927887, 6.9728851, 6.0178833, 5.0628815, 4.1078796, 3.6935883, 3.2792969, 2.8650055, 2.8650055;
  57.   8.4685974, 7.5135956, 6.5585938, 5.6035919, 4.6485901, 3.6935883, 2.7385864, 2.324295, 1.9100037, 1.9100037;
  58.   8.054306, 7.0993042, 6.1443024, 5.1893005, 4.2342987, 3.2792969, 2.324295, 1.3692932, 0.95500183, 0.95500183;
  59.   7.6400146, 6.6850128, 5.730011, 4.7750092, 3.8200073, 2.8650055, 1.9100037, 0.95500183, 0, 0;
  60.   7.6400146, 6.6850128, 5.730011, 4.7750092, 3.8200073, 2.8650055, 1.9100037, 0.95500183, 0, 0]