
16-01-2012, 20:42
|
|
Registered User
 FRC #2771 (Code Red)
Team Role: Mentor
|
|
Join Date: Jan 2012
Rookie Year: 2012
Location: Grand Rapids, MI
Posts: 73
|
|
|
Re: Tracking Rectangles with Java/C++
Quote:
Originally Posted by rudun
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.
|