|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools |
Rating:
|
Display Modes |
|
|
|
#1
|
|||
|
|||
|
Re: Tracking Rectangles with Java/C++
Have you read through this whitepaper?
http://firstforge.wpi.edu/sf/docman/...n.root/doc1302 While it doesn't talk specifically to functions or specific library calls, it does talk about different techniques specifically related to this years game. |
|
#2
|
|||
|
|||
|
Re: Tracking Rectangles with Java/C++
Just so there is no misunderstanding, the vision libraries that LabVIEW uses are equally accessible from C/C++. The NI product for C development is called LabWindows CVI, so the vision documentation with the CVI suffix is all about the C/C++ entry points.
C:\Program Files\National Instruments\Vision\Documentation contains general documentation about vision processing and LV and C/C++ specific documents and others specific to Vision Assistant. It also has a calibration grid file if you need to correct the images for lens distortion. The libraries are installed on the cRIO and if you have installed Vision Assistant, I believe you have them on the laptop as well. It has been a while since I've looked at the WPI wrappers, and at least initially, they tended to hide the imaq entry point rather than simplify them. Perhaps the Examples for C based image processing will be helpful. They are located at C:\Program Files\National Instruments\Vision\Examples\MSVC. NI doesn't have Java wrappers for the C libraries or for much else. I know some have been added to WPILib, but it is far from complete. If you are more familiar with OpenCV, that is certainly a good option. I wouldn't expect it to be that much difference in performance or capabilities, but both libraries have their specializations and benefits. If you search online, you can probably find some comparisons. Once again, I'd also encourage you to take advantage of vision assistant, its code generation features and the vision concept manual. Greg McKaskle |
|
#3
|
|||
|
|||
|
Re: Tracking Rectangles with Java/C++
Quote:
Code:
void Camera::FindRectangles() {
HSLImage *rawImage = camera.GetImage();
MonoImage *monoImage = rawImage->GetLuminancePlane();
Image *image = monoImage->GetImaqImage();
workingImageWidth = monoImage->GetWidth();
workingImageHeight = monoImage->GetHeight();
delete monoImage;
delete rawImage;
RectangleDescriptor *rectangleDescriptor = new RectangleDescriptor;
rectangleDescriptor->minWidth = 0;
rectangleDescriptor->minHeight = 0;
rectangleDescriptor->maxWidth = workingImageWidth;
rectangleDescriptor->maxHeight = workingImageHeight;
int numCurrentMatches;
RectangleMatch *temp;
temp = imaqDetectRectangles(image,
rectangleDescriptor,
NULL, // Default curve options as per manual.
NULL, // Default shape detection options.
NULL, // (ROI) Whole image should be searched.
&numCurrentMatches);
matches->erase(matches->begin(), matches->end());
matches = new vector<RectangleMatch>;
for (int i = 0; i < numCurrentMatches; i++)
matches->push_back(temp[i]);
imaqDispose(temp);
}
|
|
#4
|
|||
|
|||
|
Re: Tracking Rectangles with Java/C++
Would I be correct in assuming that in your example code, Camera is a class you made?
|
|
#5
|
|||
|
|||
|
Re: Tracking Rectangles with Java/C++
Yes, once we have our tracking code working completely and performing as we'd like, I'll likely post the full source code and an accompanying whitepaper.
|
|
#6
|
|||
|
|||
|
Re: Tracking Rectangles with Java/C++
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.
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|