Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   General Forum (http://www.chiefdelphi.com/forums/forumdisplay.php?f=16)
-   -   Tracking Rectangles with Java/C++ (http://www.chiefdelphi.com/forums/showthread.php?t=99618)

pattyb112 16-01-2012 13:24

Re: Tracking Rectangles with Java/C++
 
Does anybody know how to perform the convex hull operations mentioned in the White Paper in Java? It specifically states that C/C++ and LabView can do it but there is nothing about Java and we are really scratching our heads over the problem.

If anyone could help us out on this problem it would be greatly appreciated. Thanks!

dvanvoorst 16-01-2012 20:42

Re: Tracking Rectangles with Java/C++
 
Quote:

Originally Posted by rudun (Post 1106286)
Would this be how to use the detectRectangles function in java. We looked at the ellipseDetect and I am thinking that hey do the same thing just based on different descriptors.

Code:

    private static final BlockingFunction imaqDetectRectanglesFn =
            NativeLibrary.getDefaultInstance().getBlockingFunction("imaqDetectRectangles");
    static { imaqDetectRectanglesFn.setTaskExecutor(NIVision.taskExecutor); }
    private static Pointer numberOfRectanglesDetected = new Pointer(4);
   
    public static RectangleMatch[] detectRectangles(MonoImage image, RectangleDescriptor rectangleDescriptor,
            CurveOptions curveOptions, ShapeDetectionOptions shapeDetectionOptions,
            RegionOfInterest roi) throws NIVisionException {

        int curveOptionsPointer = 0;
        if (curveOptions != null)
            curveOptionsPointer = curveOptions.getPointer().address().toUWord().toPrimitive();
        int shapeDetectionOptionsPointer = 0;
        if (shapeDetectionOptions != null)
            shapeDetectionOptionsPointer = shapeDetectionOptions.getPointer().address().toUWord().toPrimitive();
        int roiPointer = 0;
        if (roi != null)
            roiPointer = roi.getPointer().address().toUWord().toPrimitive();

        int returnedAddress =
                imaqDetectRectanglesFn.call6(
                image.image.address().toUWord().toPrimitive(),
                rectangleDescriptor.getPointer().address().toUWord().toPrimitive(),
                curveOptionsPointer, shapeDetectionOptionsPointer,
                roiPointer,
                numberOfRectanglesDetected.address().toUWord().toPrimitive());

        try {
            NIVision.assertCleanStatus(returnedAddress);
        } catch (NIVisionException ex) {
            if (!ex.getMessage().equals("No error."))
                throw ex;
        }

        RectanglesMatch[] matches = RectanglesMatch.getMatchesFromMemory(returnedAddress, numberOfRectanglesDetected.getInt(0));
        NIVision.dispose(new Pointer(returnedAddress,0));
        return matches;
    }


Where are RectangleMatch and RectangleDescriptor defined? I'd love to use this code to learn more about wrapping the IMAQ functions, but I'm running stuck getting it to compile.

basicxman 16-01-2012 20:43

Re: Tracking Rectangles with Java/C++
 
Quote:

Originally Posted by dvanvoorst (Post 1107232)
Where are RectangleMatch and RectangleDescriptor defined? I'd love to use this code to learn more about wrapping the IMAQ functions, but I'm running stuck getting it to compile.

Check out nivision.h and the CVI documentation mentioned earlier.

RectangleMatch: http://mmrambotics.ca/wpilib/struct_...h__struct.html

RectangleDescriptor:
http://mmrambotics.ca/wpilib/struct_...r__struct.html

basicxman 21-01-2012 17:37

Re: Tracking Rectangles with Java/C++
 
Quote:

Originally Posted by basicxman (Post 1102953)
Here's a snippet of [entirely untested as I don't currently have access to a cRio] code.

Do not use this snippet! After I finally got to experiment with the camera for a while today, I've fixed some flaws in that script and found a better way of doing it entirely.


All times are GMT -5. The time now is 18:13.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi