Exemple #1
0
bool _Bullseye::getCircleCenter(vDouble3* pCenter)
{
	NULL_F(pCenter);
	NULL_F(m_pStream);

	//Use num instead of m_numCircle to avoid multi-thread inconsistancy
	int num = m_numCircle;
	if(num==0)return false;

	int i;
	vDouble3* pMarker = &m_pCircle[0];
	vDouble3* pCompare;
	int camCenter = (m_pStream->m_width+m_pStream->m_height)/2;

	//Find the closest point
	for(i=1; i<num; i++)
	{
		pCompare = &m_pCircle[i];
		if(abs(pCompare->m_x + pCompare->m_y - camCenter) < abs(pMarker->m_x + pMarker->m_y - camCenter))
		{
			pMarker = pCompare;
		}
	}

	pCenter->m_x = pMarker->m_x;
	pCenter->m_y = pMarker->m_y;
	pCenter->m_z = pMarker->m_z;

	return true;
}
Exemple #2
0
bool _Automaton::transit(string* pNextStateName)
{
	NULL_F(pNextStateName);

	int iNext = getStateIdx(pNextStateName);
	CHECK_F(iNext<0);

	m_iState = iNext;
	return true;
}
Exemple #3
0
bool _ROITracker::link(void)
{
	NULL_F(m_pKiss);
	Kiss* pK = (Kiss*)m_pKiss;

	//link instance
	string iName = "";
	F_ERROR_F(pK->v("_Stream",&iName));
	m_pStream = (_StreamBase*)(pK->root()->getChildInstByName(&iName));

	//TODO: link variables to Automaton

	return true;
}
Exemple #4
0
bool HM_follow::draw(Frame* pFrame, vInt4* pTextPos)
{
	NULL_F(pFrame);
	Mat* pMat = pFrame->getCMat();

	putText(*pMat,
			"HM: rpmL=" + i2str(m_pHM->m_motorPwmL) + ", rpmR="
					+ i2str(m_pHM->m_motorPwmR),
			cv::Point(pTextPos->m_x, pTextPos->m_y), FONT_HERSHEY_SIMPLEX, 0.5,
			Scalar(0, 255, 0), 1);
	pTextPos->m_y += pTextPos->m_w;

	CHECK_T(m_pTarget==NULL);
	circle(*pMat, Point(m_pTarget->m_bbox.midX(), m_pTarget->m_bbox.midY()), 10,
			Scalar(0, 0, 255), 2);

	return true;
}
bool RC_visualFollow::draw(void)
{
	CHECK_F(!this->ActionBase::draw());
	Window* pWin = (Window*)this->m_pWindow;
	Mat* pMat = pWin->getFrame()->getCMat();

	NULL_F(m_pROITracker);

	Rect2d roi;

	// draw the tracked object
	if (m_bSelect)
	{
		roi = getMouseROI(m_ROI);
		if (roi.height > 0 || roi.width > 0)
		{
			rectangle(*pMat, roi, Scalar(0, 255, 0), 2);
		}
	}
	else if (m_pROITracker->m_bTracking)
	{
		roi = m_pROITracker->m_ROI;
		if (roi.height > 0 || roi.width > 0)
		{
			rectangle(*pMat, roi, Scalar(0, 0, 255), 2);
		}
	}

	if (m_ROImode == MODE_ASSIST)
	{
		m_pUIassist->draw();
	}
	else if (m_ROImode == MODE_DRAWRECT)
	{
		m_pUIdrawRect->draw();
	}

	circle(*pMat, Point(m_roll.m_targetPos, m_pitch.m_targetPos), 50,
			Scalar(0, 255, 0), 2);

	return true;
}
Exemple #6
0
bool _Universe::draw(Frame* pFrame, vInt4* pTextPos)
{
	NULL_F(pFrame);

	Mat* pMat = pFrame->getCMat();
	putText(*pMat, "Universe FPS: " + i2str(getFrameRate()),
			cv::Point(pTextPos->m_x, pTextPos->m_y), FONT_HERSHEY_SIMPLEX, 0.5,
			Scalar(0, 255, 0), 1);
	pTextPos->m_y += pTextPos->m_w;

	OBJECT* pObj;
	Scalar color;
	double thickness;

	for (int i = 0; i < m_nObj; i++)
	{
		pObj = &m_pObj[i];
		if (pObj->m_frameID <= 0)continue;

		color = Scalar(0, 255, 0);
		thickness = 1;
		Rect bbox;
		bbox.x = pObj->m_bbox.m_x;
		bbox.y = pObj->m_bbox.m_y;
		bbox.width = pObj->m_bbox.m_z - pObj->m_bbox.m_x;
		bbox.height = pObj->m_bbox.m_w - pObj->m_bbox.m_y;

		rectangle(*pMat, bbox, color, thickness);

		if(pObj->m_iClass >= m_nObjClass)continue;
		putText(*pMat, m_pObjClass[pObj->m_iClass].m_name,
				Point(bbox.x + bbox.width / 2, bbox.y + bbox.height / 2),
				FONT_HERSHEY_SIMPLEX, 0.8, color, thickness);
	}

	return true;

}
Exemple #7
0
bool _Universe::link(void)
{
	NULL_F(m_pKiss);

	return true;
}