示例#1
0
vector<POI> POIFinder::GetPOIsInImage(IplImage *cv_image)
{

	//Pre-processing
//	Image originalImage(cv_image);
//	Image grayImage = originalImage.getGrayScale();
/*	IplImage *gray_image  = cvCreateImage(cvGetSize(cv_image),cv_image->depth, 1);
	if(cv_image->nChannels == 3)
	{
		cvCvtColor(cv_image, gray_image,CV_BGR2GRAY);

	}
	else
		cvCopyImage(cv_image, gray_image);
	Image grayImage(gray_image);*/
	Image grayImage(cv_image);
	//Core algorithm
	vector<Blob> detectedBlobs = FindBlobs(grayImage);
	
	vector<POI> newCoordinates;
	for (unsigned int i = 0; i < detectedBlobs.size(); i++)
	{
		newCoordinates.push_back(POI(detectedBlobs[i].GetCentroid()));
	
		//cout << "Novo POI: " << endl;
		//Debug::printCvPoint2D32f(newCoordinates[newCoordinates.size()-1].getCoordinates2d());
	};
	return newCoordinates;
}
示例#2
0
POI POIsImageWidget::getPOIAtPosition(int x, int y) {

	for (unsigned int i = 0; i < _POIs.size(); i++) {
		if (_POIs.at(i).isPointInsideSelectionArea2d(x, y)) {
			return _POIs.at(i);
		}
	}
	return POI(-1.0f, -1.0f);
}
示例#3
0
文件: poi.C 项目: wixor/ewo
POIvec extractPOIs(const Array2D<float> &eval, float threshold)
{
    int w = eval.getWidth(), h = eval.getHeight();

    POIvec all;
    for(int y=0; y<h; y++)
        for(int x=0; x<w; x++)
            if(eval[y][x] >= threshold)
                all.push_back(POI(x,y,eval[y][x]));
    std::sort(all.begin(), all.end());
    return all;
}