Example #1
0
int main (int argc, char const *argv[])
{
	sourceImage = cvLoadImage("source.bmp", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
	objectImage = cvLoadImage("source.bmp", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_GRAYSCALE);
	templateImage = cvLoadImage("template.bmp", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_GRAYSCALE);
	
	cvNamedWindow(windowName, CV_WINDOW_AUTOSIZE);
	cvCreateTrackbar(trackbarName, windowName, &level, 255, on_change);
	
	while (1) {
		int key = cvWaitKey(10);
		
		templateMatching();
		
		if ( key == 'q' ) {
			break;
		}
	}
	cvDestroyWindow(windowName);
	return 0;
}
Example #2
0
void on_change(int value) {
	templateMatching();
}
Example #3
0
void CTldAlgorithm::perform(CVideoLoader &loader, std::unique_ptr<CMeasuredData> &data)
{
	cv::Mat templ = CPatternController::getInstance().getImgVec().begin()->second;
	CPointContainer points;
    tld::TLD tracker;
    tracker.trackerEnabled = trackerEnabled;
	tracker.alternating = alternating;
	tracker.learningEnabled = learningEnabled;
	bool isInitialized = false;
	cv::Rect rect;
	cv::Mat frame, frameGray;
	int frameCount = 1;
	std::chrono::time_point<std::chrono::system_clock> start, end;			

	while(true)
	{
		frame = loader.getNextFrame();
		if(true == frame.empty())
		{
			break;
		}

		start = std::chrono::system_clock::now();	
		if(false == isInitialized)
		{
			isInitialized = true;
			rect = templateMatching(templ, frame, 0); 
			frameGray = frame.clone();	
			cv::cvtColor(frame, frameGray, CV_BGR2GRAY);

			tracker.detectorCascade->imgWidth = frameGray.cols;
			tracker.detectorCascade->imgHeight = frameGray.rows;
			tracker.detectorCascade->imgWidthStep = frameGray.step;
			tracker.detectorCascade->varianceFilter->enabled = varianceFilterEnabled;
			tracker.detectorCascade->ensembleClassifier->enabled = ensembleClassifierEnabled;
			tracker.detectorCascade->nnClassifier->enabled = nnClassifierEnabled;
			tracker.detectorCascade->nnClassifier->thetaTP = thetaTP;
			tracker.detectorCascade->nnClassifier->thetaFP = thetaFP;
			tracker.detectorCascade->useShift = useShift;
			tracker.detectorCascade->shift = shift;
			tracker.detectorCascade->minScale = minScale;
			tracker.detectorCascade->maxScale = maxScale;
			tracker.detectorCascade->minSize = minSize;
			tracker.detectorCascade->numTrees = numTrees;

			tracker.selectObject(frameGray, &rect);
		}

		if (1 == frameCount % 2) 
		{
				tracker.processImage(frame);
		}

		if (tracker.currBB != NULL) {
				
			if(nullptr != data)
			{
				points.addPoint(tracker.currBB->tl(),tracker.currBB->br());
				data->addPredictPoints(tracker.currBB->tl(),tracker.currBB->br());
			}
			cv::rectangle(frame,tracker.currBB->tl(),tracker.currBB->br(),cv::Scalar(255, 0, 0),2, 8);
		}
		else if(nullptr != data)
		{
		//	points.addPoint(cv::Point(-1, -1), cv::Point(-1, -1));
			data->addPredictPoints(cv::Point(-1, -1), cv::Point(-1, -1));
		}
	
		end = std::chrono::system_clock::now();	

		std::chrono::duration<double> elapsedTime = end-start;
		if(nullptr != data)
		{
			data->addComputeTime( elapsedTime.count() );
		}

		cv::imshow(m_winName, frame);

		if(true == loader.interval(20)) break;
		frameCount = (frameCount + 1) % 2;
	}
	//points.toFile(m_winName);
	tracker.release();
}