|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools | Rate Thread | Display Modes |
|
#1
|
||||
|
||||
|
Image processing lag
We just added image processing from the AxisCamera, and our robot began lagging quite a bit. Our CPU use goes to 100 percent on the robot once we try to analyze the image. Is there any way to fix this? This is our code:
Code:
public ParticleAnalysisReport[] getRectangleParticles() throws AxisCameraException, NIVisionException
{
ParticleAnalysisReport[] toReturn = new ParticleAnalysisReport[0];
trial++;
int current = 0;
try
{
//gets and stores the current camera image
img = AxisCamera.getInstance().getImage();
//Created a binary image where pixels meeting threshold
BinaryImage binary = img.thresholdHSL(0, 1, 0, 1, 0, 1);
img.thresholdHSL(0, 1, 0, 1, 0, 1);
//Array of all detected rectangles, right?
ParticleAnalysisReport[] particles = binary.getOrderedParticleAnalysisReports();
//Makes checks to see if the rectangle meets size and ratio requirements
for (int i = 0; i < particles.length; i++)
{
ParticleAnalysisReport test = particles[i];
if (test.particleToImagePercent > .1 && test.particleToImagePercent < .4)
{
double ratio = test.boundingRectWidth/test.boundingRectHeight;
if (ratio > ((4/3) - .2) && ratio < ((4/3) + .2))
{
toReturn = new ParticleAnalysisReport[toReturn.length + 1];
System.out.println("Trial: " + trial + "Current: " + current + "Raw: " + particles.length);
toReturn[current] = test;
current++;
}
}
}
//release memory allocated to the images
//img.free();
binary.free();
}
catch (NIVisionException ex)
{
ex.printStackTrace();
}
//return the rectangles that meet the requirements
System.out.println("Trial: " + trial);
return toReturn;
}
|
|
#2
|
|||
|
|||
|
Re: Image processing lag
Lag and 100% CPU? Are you calling getRectangleParticles() repeatedly in teleopPeriodic or teleopContinuous without starting vision processing as another thread?
|
|
#3
|
|||
|
|||
|
Re: Image processing lag
The part of your code we'll need to see are your teleopPeriodic() and teleopContinuous() loops. My bet is that you're trying to run your image processing at the beginning of one of those, and the whole robot has to stop while it waits for the image processing operations to clear.
|
|
#4
|
|||
|
|||
|
Re: Image processing lag
Try using a timer class to see the elapsed ms of each method invocation.
Are you calling the method a ton of times? Are you checking if you have a new image? |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|