コード例 #1
0
ファイル: BinaryImage.cpp プロジェクト: chopshop-166/frc-2010
/**
 * Fill in the particle analysis report.
 * For a given image, fill in the particle analysis report structure.
 * @param imageParam the image to use
 * @param particleNumber the particle index in the set of particles for the image
 * @param par the particle analysis report to be filled in
 */
int BinaryImage::ParticleAnalysis(Image* imageParam, int particleNumber, ParticleAnalysisReport* par)
{
	int success = 0;

	success = imaqGetImageSize(imageParam, &par->imageWidth, &par->imageHeight);
	wpi_imaqAssert(success, "Error getting image size");
	
	par->particleIndex = particleNumber;		
	
	success = imaqCountParticles(imageParam, TRUE, NULL);
	wpi_imaqAssert(success, "Error counting particles");
	
	par->center_mass_x = (int) particleMeasurement(imageParam, particleNumber, IMAQ_MT_CENTER_OF_MASS_X);
	par->center_mass_y = (int) particleMeasurement(imageParam, particleNumber, IMAQ_MT_CENTER_OF_MASS_Y);
	par->particleArea = (int) particleMeasurement(imageParam, particleNumber, IMAQ_MT_AREA);	
	par->boundingRect.top = (int) particleMeasurement(imageParam, particleNumber, IMAQ_MT_BOUNDING_RECT_TOP);
	par->boundingRect.left = (int) particleMeasurement(imageParam, particleNumber, IMAQ_MT_BOUNDING_RECT_LEFT);
	par->boundingRect.height = (int) particleMeasurement(imageParam, particleNumber, IMAQ_MT_BOUNDING_RECT_HEIGHT);
	par->boundingRect.width = (int) particleMeasurement(imageParam, particleNumber, IMAQ_MT_BOUNDING_RECT_WIDTH);
	par->particleToImagePercent = particleMeasurement(imageParam, particleNumber, IMAQ_MT_AREA_BY_IMAGE_AREA);
	par->particleQuality = particleMeasurement(imageParam, particleNumber, IMAQ_MT_AREA_BY_PARTICLE_AND_HOLES_AREA);

	/* normalized position (-1 to 1) */
	par->center_mass_x_normalized = NormalizeFromRange(par->center_mass_x, par->imageWidth);
	par->center_mass_y_normalized = NormalizeFromRange(par->center_mass_y, par->imageHeight);

	return success;
}
コード例 #2
0
ファイル: BinaryImage.cpp プロジェクト: chopshop-166/frc-2010
/**
 * Get then number of particles for the image.
 * @returns the number of particles found for the image.
 */
int BinaryImage::GetNumberParticles()
{
	int numParticles = 0;
	int success = imaqCountParticles(image, 1, &numParticles);
	wpi_imaqAssert(success, "IMAQ Error counting particles");
	return numParticles;
}
コード例 #3
0
/**
 * Measure a single parameter for an image.
 * Get the measurement for a single parameter about an image by calling the imaqMeasureParticle
 * function for the selected parameter.
 * @param image the image to measure
 * @param particleNumber which particle in the set of particles
 * @param whatToMeasure the imaq MeasurementType (what to measure)
 * @returns the value of the measurement
 */
double BinaryImage::ParticleMeasurement(int particleNumber, MeasurementType whatToMeasure)
{
	double returnDouble;
	int success;
	success = imaqMeasureParticle(m_imaqImage, particleNumber, 0, whatToMeasure, &returnDouble);
	wpi_imaqAssert(success, "Error measuring particle");
	if (!success) return 0.0;
	else return returnDouble;
}
コード例 #4
0
/**
 * Create a new image by loading a file.
 * @param fileName The path of the file to load.
 */
RGBImage::RGBImage(const char *fileName) : ColorImage(IMAQ_IMAGE_RGB)
{
	int success = imaqReadFile(m_imaqImage, fileName, NULL, NULL);
	wpi_imaqAssert(success, "Imaq ReadFile error");
}