Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package test;
- import java.awt.image.*;
- import java.io.*;
- import javax.imageio.*;
- import org.bytedeco.javacpp.Loader;
- import org.bytedeco.javacpp.Pointer;
- import org.bytedeco.javacpp.opencv_core.CvContour;
- import org.bytedeco.javacpp.opencv_core.CvMemStorage;
- import org.bytedeco.javacpp.opencv_core.CvSeq;
- import org.bytedeco.javacpp.opencv_core.IplImage;
- import org.bytedeco.javacpp.opencv_highgui;
- import static org.bytedeco.javacpp.helper.opencv_imgproc.cvFindContours;
- import static org.bytedeco.javacpp.opencv_core.*;
- import static org.bytedeco.javacpp.opencv_highgui.*;
- import static org.bytedeco.javacpp.opencv_imgproc.*;
- public class CannyContour {
- public static void main(String[] args) {
- imageToContour("C:\\Documents and Settings\\Hao\\Desktop\\skull.jpg");
- }
- public static void imageToContour (String srcPath) {
- IplImage src = cvLoadImage(srcPath);
- IplImage grayImage = IplImage.create(src.width(), src.height(), IPL_DEPTH_8U, 1);
- cvCvtColor(src, grayImage, CV_BGR2GRAY);
- CvSeq contours = new CvSeq();
- cvThreshold(grayImage, grayImage, 10, 255, CV_THRESH_BINARY);
- // cvCanny(grayImage, grayImage, 100, 200, 3);
- CvMemStorage memory = CvMemStorage.create();
- cvFindContours(grayImage, memory, contours, Loader.sizeof(CvContour.class), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
- // while(contours!=null && !contours.isNull()){
- // System.out.println("Elem size: " + contours.elem_size());
- // System.out.println("Total: " + contours.total());
- // if(contours.elem_size()>0 && contours.total()>=1){
- // CvSeq point = cvApproxPoly(contours, Loader.sizeof(CvContour.class), memory, CV_POLY_APPROX_DP, cvContourPerimeter(contours)*0.00002, 0);
- // cvDrawContours(src, point, CvScalar.YELLOW, CvScalar.RED, -1, 1, CV_AA);
- // }
- // contours = contours.h_next();
- // }
- ///////////////////////////////////////////////////////
- CvSeq largestContour = new CvSeq();
- double largestArea = 0;
- while(contours!=null && !contours.isNull()){
- double area = cvContourArea(contours);
- System.out.println(contours.total());
- System.out.println("Area: " + area);
- System.out.println("Largest Area: " + largestArea);
- if(area>0) {
- if(area>largestArea){
- largestArea = area;
- largestContour = contours;
- }
- }
- contours = contours.h_next();
- }
- /////////////////////////////////////////////////////////
- System.out.println("total: " + largestContour.total());
- CvSeq point = cvApproxPoly(largestContour, Loader.sizeof(CvContour.class), memory, CV_POLY_APPROX_DP, cvContourPerimeter(largestContour)*0.00002, 0);
- cvDrawContours(src, point, CvScalar.YELLOW, CvScalar.RED, -1, 1, CV_AA);
- String path = "C:\\Documents and Settings\\Hao\\Desktop\\target.jpg";
- cvSaveImage(path, src);
- System.exit(0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement