Advertisement
Guest User

hao_LARGEST_CONTOUR

a guest
Nov 1st, 2014
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.79 KB | None | 0 0
  1. package test;
  2. import java.awt.image.*;
  3. import java.io.*;
  4.  
  5. import javax.imageio.*;
  6.  
  7. import org.bytedeco.javacpp.Loader;
  8. import org.bytedeco.javacpp.Pointer;
  9. import org.bytedeco.javacpp.opencv_core.CvContour;
  10. import org.bytedeco.javacpp.opencv_core.CvMemStorage;
  11. import org.bytedeco.javacpp.opencv_core.CvSeq;
  12. import org.bytedeco.javacpp.opencv_core.IplImage;
  13. import org.bytedeco.javacpp.opencv_highgui;
  14.  
  15. import static org.bytedeco.javacpp.helper.opencv_imgproc.cvFindContours;
  16. import static org.bytedeco.javacpp.opencv_core.*;
  17. import static org.bytedeco.javacpp.opencv_highgui.*;
  18. import static org.bytedeco.javacpp.opencv_imgproc.*;
  19.  
  20. public class CannyContour {
  21.     public static void main(String[] args) {
  22.         imageToContour("C:\\Documents and Settings\\Hao\\Desktop\\skull.jpg");
  23.     }
  24.    
  25.     public static void imageToContour (String srcPath) {
  26.         IplImage src = cvLoadImage(srcPath);
  27.         IplImage grayImage = IplImage.create(src.width(), src.height(), IPL_DEPTH_8U, 1);
  28.         cvCvtColor(src, grayImage, CV_BGR2GRAY);
  29.        
  30.        
  31.         CvSeq contours = new CvSeq();
  32.         cvThreshold(grayImage, grayImage, 10, 255, CV_THRESH_BINARY);
  33. //      cvCanny(grayImage, grayImage, 100, 200, 3);
  34.         CvMemStorage memory = CvMemStorage.create();
  35.         cvFindContours(grayImage, memory, contours, Loader.sizeof(CvContour.class), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
  36. //      while(contours!=null && !contours.isNull()){
  37. //          System.out.println("Elem size: " + contours.elem_size());
  38. //          System.out.println("Total: " + contours.total());
  39. //          if(contours.elem_size()>0 && contours.total()>=1){
  40. //              CvSeq point = cvApproxPoly(contours, Loader.sizeof(CvContour.class), memory, CV_POLY_APPROX_DP, cvContourPerimeter(contours)*0.00002, 0);
  41. //              cvDrawContours(src, point, CvScalar.YELLOW, CvScalar.RED, -1, 1, CV_AA);
  42. //          }
  43. //          contours = contours.h_next();
  44. //      }
  45.         ///////////////////////////////////////////////////////
  46.         CvSeq largestContour = new CvSeq();
  47.         double largestArea = 0;
  48.         while(contours!=null && !contours.isNull()){
  49.             double area = cvContourArea(contours);
  50.             System.out.println(contours.total());
  51.             System.out.println("Area: " + area);
  52.             System.out.println("Largest Area: " + largestArea);
  53.             if(area>0) {
  54.                 if(area>largestArea){
  55.                     largestArea = area;
  56.                     largestContour = contours;
  57.                 }
  58.             }
  59.             contours = contours.h_next();
  60.         }
  61.         /////////////////////////////////////////////////////////
  62.        
  63.         System.out.println("total: " + largestContour.total());
  64.         CvSeq point = cvApproxPoly(largestContour, Loader.sizeof(CvContour.class), memory, CV_POLY_APPROX_DP, cvContourPerimeter(largestContour)*0.00002, 0);
  65.         cvDrawContours(src, point, CvScalar.YELLOW, CvScalar.RED, -1, 1, CV_AA);
  66.        
  67.         String path = "C:\\Documents and Settings\\Hao\\Desktop\\target.jpg";
  68.         cvSaveImage(path, src);
  69.         System.exit(0);
  70.     }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement