blob: 90703c0d30dfa56a1f4bb1ebe21e059763219fe7 [file] [log] [blame]
Brian Silverman26e4e522015-12-17 01:56:40 -05001/*----------------------------------------------------------------------------*/
2/* Copyright (c) FIRST 2014. All Rights Reserved. */
3/* Open Source Software - may be modified and shared by FRC teams. The code */
4/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */
5/*----------------------------------------------------------------------------*/
6
7#include "Vision/MonoImage.h"
8#include "nivision.h"
9
10using namespace std;
11
12MonoImage::MonoImage() : ImageBase(IMAQ_IMAGE_U8) {}
13
14/**
15 * Look for ellipses in an image.
16 * Given some input parameters, look for any number of ellipses in an image.
17 * @param ellipseDescriptor Ellipse descriptor
18 * @param curveOptions Curve options
19 * @param shapeDetectionOptions Shape detection options
20 * @param roi Region of Interest
21 * @returns a vector of EllipseMatch structures (0 length vector on no match)
22 */
23vector<EllipseMatch> *MonoImage::DetectEllipses(
24 EllipseDescriptor *ellipseDescriptor, CurveOptions *curveOptions,
25 ShapeDetectionOptions *shapeDetectionOptions, ROI *roi) {
26 int numberOfMatches;
27 EllipseMatch *e =
28 imaqDetectEllipses(m_imaqImage, ellipseDescriptor, curveOptions,
29 shapeDetectionOptions, roi, &numberOfMatches);
30 auto ellipses = new vector<EllipseMatch>;
31 if (e == nullptr) {
32 return ellipses;
33 }
34 for (int i = 0; i < numberOfMatches; i++) {
35 ellipses->push_back(e[i]);
36 }
37 imaqDispose(e);
38 return ellipses;
39}
40
41vector<EllipseMatch> *MonoImage::DetectEllipses(
42 EllipseDescriptor *ellipseDescriptor) {
43 vector<EllipseMatch> *ellipses =
44 DetectEllipses(ellipseDescriptor, nullptr, nullptr, nullptr);
45 return ellipses;
46}