⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trackapi.cpp

📁 good luck to everyone!
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	int largestParticleIndex = 0;	success = GetLargestParticle(cameraImage, &largestParticleIndex, rect );	if ( !success )	{		errorCode = GetLastVisionError(); 		DPRINTF (LOG_DEBUG, "Error after GetLargestParticle = %i  %s ", errorCode, GetVisionErrorText(errorCode));		frcDispose(__FUNCTION__,cameraImage,histImage,NULL); 		imaqSetError(ERR_COLOR_NOT_FOUND, __FUNCTION__);		return success; 	}	DPRINTF(LOG_INFO, "largestParticleIndex = %i\n", largestParticleIndex);	/* Particles were found  */		/* 		 * Fill in report information for largest particle found		 */		success = frcParticleAnalysis(cameraImage, largestParticleIndex, trackReport);		trackReport->imageTimestamp = imageTime;				/* clean up */		if (!success) {frcDispose(__FUNCTION__,cameraImage,histImage,NULL); return success;}				/* particle color statistics */		/* only if a color report requested */		if (colorReport != NULL)		{			/* first filter out the other particles */			ParticleFilterCriteria2 criteria;			ParticleFilterOptions* options = NULL;			Rect rect;			int numParticles;			success = frcParticleFilter(cameraImage, cameraImage, &criteria, 1, options, 					rect, &numParticles);			if ( !success )	{ 				DPRINTF(LOG_INFO, "frcParticleFilter errorCode %i", GetLastVisionError()); 			}									/* histogram the original image using the thresholded image as a mask */			int numClasses = 10; //how many classes?			ColorHistogramReport* chrep = imaqColorHistogram2(histImage, numClasses, IMAQ_HSL, 						NULL, cameraImage);			if (chrep == NULL) { 				DPRINTF(LOG_INFO, "NULL Color Histogram");				errorCode = GetLastVisionError(); 			} else {				colorReport->particleHueMax = chrep->plane1.max;				colorReport->particleHueMin = chrep->plane1.min;				colorReport->particleHueMean = chrep->plane1.mean;				colorReport->particleSatMax = chrep->plane2.max;				colorReport->particleSatMin  = chrep->plane2.min;				colorReport->particleSatMean = chrep->plane2.mean;				colorReport->particleLumMax = chrep->plane3.max;				colorReport->particleLumMin = chrep->plane3.min;				colorReport->particleLumMean = chrep->plane3.mean;				colorReport->numberParticlesFound = numParticles;				frcDispose(chrep); 			}		}	/* clean up */	frcDispose(__FUNCTION__,cameraImage,histImage,NULL); 		return success;	}/** *   Data functions for tracking *//** * @brief Get default HSL tracking parameters * Note these parameters are not fully characterized at this point * Get these default values and modify them as needed for your environment * @param hue tasked color * @param light saturation/luminance */TrackingThreshold GetTrackingData(FrcHue hue, FrcLight light){	TrackingThreshold trackingData;			//set saturation & luminance		switch (light) {		default:		case FLUORESCENT:			trackingData.saturation.minValue = 100;			trackingData.saturation.maxValue = 255;			trackingData.luminance.minValue = 40;			trackingData.luminance.maxValue = 255;			if (hue == GREEN) trackingData.luminance.minValue = 100;			if (hue == PINK) trackingData.saturation.minValue = 80;			if (hue == PINK) trackingData.luminance.minValue = 60;			if (hue == PINK) trackingData.luminance.maxValue = 155;			break;		case PASSIVE_LIGHT:			trackingData.saturation.minValue = 50;			trackingData.saturation.maxValue = 255;			trackingData.luminance.minValue = 20;			trackingData.luminance.maxValue = 255;			break;		case BRIGHT_LIGHT:			trackingData.saturation.minValue = 0;			trackingData.saturation.maxValue = 100;			trackingData.luminance.minValue = 100;			trackingData.luminance.maxValue = 255;			break;		case ACTIVE_LIGHT:			trackingData.saturation.minValue = 0;			trackingData.saturation.maxValue = 50;			trackingData.luminance.minValue = 150;			trackingData.luminance.maxValue = 255;			break;		case WHITE_LIGHT:			trackingData.saturation.minValue = 0;			trackingData.saturation.maxValue = 20;			trackingData.luminance.minValue = 200;			trackingData.luminance.maxValue = 255;			break;	}		//set hue	switch (hue){	default:	case WHITE:		strcpy (trackingData.name, "WHITE");		trackingData.hue.minValue = 0;		trackingData.hue.maxValue = 255;		break;	case ORANGE:		strcpy (trackingData.name, "ORANGE");		trackingData.hue.minValue = 5;		trackingData.hue.maxValue = 25;		break;	case YELLOW:		strcpy (trackingData.name, "YELLOW");		trackingData.hue.minValue = 30;		trackingData.hue.maxValue = 50;		break;	case GREEN:		strcpy (trackingData.name, "GREEN");		if (light == FLUORESCENT) {			trackingData.hue.minValue = 60;			trackingData.hue.maxValue = 110;		} else {			trackingData.hue.minValue = 90;			trackingData.hue.maxValue = 125;					}		break;	case BLUE:		strcpy (trackingData.name, "BLUE");		trackingData.hue.minValue = 140;		trackingData.hue.maxValue = 170;		break;	case PURPLE:		strcpy (trackingData.name, "PURPLE");		trackingData.hue.minValue = 180;		trackingData.hue.maxValue = 200;		break;	case PINK:		strcpy (trackingData.name, "PINK");		trackingData.hue.minValue = 210;		trackingData.hue.maxValue = 250;		break;	case RED:		strcpy (trackingData.name, "RED");		trackingData.hue.minValue = 240;		trackingData.hue.maxValue = 255;		break;	}  return(trackingData);}/** * Print particle analysis report * @param myReport Report to print */void PrintReport(ParticleAnalysisReport* myReport){	dprintf(LOG_INFO, "particle analysis:\n    %s%i  %s%i\n    %s%lf\n    %s%i  %s%i\n    %s%g  %s%g\n    %s%g\n    %s%i  %s%i\n    %s%i  %s%i\n",			"imageHeight = ", myReport->imageHeight, 			"imageWidth = ", myReport->imageWidth, 			"imageTimestamp = ", myReport->imageTimestamp, 			"center_mass_x = ", myReport->center_mass_x, 			"center_mass_y = ", myReport->center_mass_y, 			"center_mass_x_normalized = ", myReport->center_mass_x_normalized, 			"center_mass_y_normalized = ", myReport->center_mass_y_normalized, 			"particleArea = ", myReport->particleArea, 			"boundingRectangleTop = ", myReport->boundingRect.top, 			"boundingRectangleLeft = ", myReport->boundingRect.left,			"boundingRectangleHeight = ", myReport->boundingRect.height, 			"boundingRectangleWidth = ", myReport->boundingRect.width);	dprintf(LOG_INFO, "quality statistics:  \n    %s%g %s%g \n",			"particleToImagePercent = ", myReport->particleToImagePercent, 			"particleQuality = ", myReport->particleQuality);}/** * Print color report * @param myReport Report to print */void PrintReport(ColorReport* myReport){	dprintf(LOG_INFO, "particle ranges for %i particles:     ",			"numberParticlesFound = ", myReport->numberParticlesFound);	;	dprintf(LOG_INFO, "\n    %s%f  %s%f  %s%f\n    %s%f %s%f  %s%f\n    %s%f  %s%f  %s%f\n -------",			"particleHueMax = ", myReport->particleHueMax, 			"particleHueMin = ", myReport->particleHueMin, 			"particleHueMean = ", myReport->particleHueMean,			"particleSatMax = ", myReport->particleSatMax, 			"particleSatMin = ", myReport->particleSatMin, 			"particleSatMean = ", myReport->particleSatMean,			"particleLumMax = ", myReport->particleLumMax, 			"particleLumMin = ", myReport->particleLumMin, 			"particleLumMean = ", myReport->particleLumMean);}/** * Print color report * @param myReport Report to print */void PrintReport(TrackingThreshold* myReport){	dprintf(LOG_INFO, "name of color: %s", myReport->name);	dprintf(LOG_INFO, "\n    %s%i  %s%i\n    %s%i %s%i\n    %s%i  %s%i\n -------",			"hueMin = ", myReport->hue.minValue, 			"hueMax = ", myReport->hue.maxValue, 			"satMin = ", myReport->saturation.minValue, 			"satMax = ", myReport->saturation.maxValue, 			"lumMin = ", myReport->luminance.minValue, 			"lumMax = ", myReport->luminance.maxValue );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -