Пример #1
0
//取消选取
void DcGp::DcGpPointCloud::CancelChoosed()
{
	if (!IsChoosed())
	{
		return;
	}
	//取消每个点的选取状态
	std::fill_n(m_pDcGpPointCloudImpl->m_pointsChoosedState.begin(), Size(), false);

	//清空每个点的选取颜色
	if (HasColors() && GetColorMode() == eTrueLinearColor)
	{
		m_pDcGpPointCloudImpl->m_choosedColors = m_pDcGpPointCloudImpl->m_rgbColors;
	}
	else if (GetColorMode() == eFalseRangeColor ||
			GetColorMode() == eFalseHeightColor ||
			GetColorMode() == eFalseScalarColor)
	{
		m_pDcGpPointCloudImpl->m_choosedColors = m_pDcGpPointCloudImpl->m_scalarColors;
	}
	else
	{
		PointColor color = {GetTempColor()[0], GetTempColor()[1], GetTempColor()[2]};
		std::fill_n(m_pDcGpPointCloudImpl->m_choosedColors.begin(), Size(), color);
	}
}
Пример #2
0
//设置指定点的选中状态
void DcGp::DcGpPointCloud::SetPointChoosed(unsigned index, bool status)
{

	if (GetPointVisibility(index) == DCCore::POINT_VISIBLE)
	{
		m_pDcGpPointCloudImpl->m_pointsChoosedState[index] = status;

		//设置选取点的颜色
		if (status)
		{
			m_pDcGpPointCloudImpl->m_choosedColors[index][0] = 255;
			m_pDcGpPointCloudImpl->m_choosedColors[index][1] = 0;
			m_pDcGpPointCloudImpl->m_choosedColors[index][2] = 0;
		}
		else
		{
			if (HasColors() && GetColorMode() == eTrueLinearColor)
			{
				m_pDcGpPointCloudImpl->m_choosedColors[index] = m_pDcGpPointCloudImpl->m_rgbColors[index];
			}
			else if (GetColorMode() == eFalseRangeColor ||
				GetColorMode() == eFalseHeightColor ||
				GetColorMode() == eFalseScalarColor)
			{
				m_pDcGpPointCloudImpl->m_choosedColors[index] = m_pDcGpPointCloudImpl->m_scalarColors[index];
			}
			else
			{
				m_pDcGpPointCloudImpl->m_choosedColors[index][0] = GetTempColor()[0];
				m_pDcGpPointCloudImpl->m_choosedColors[index][1] = GetTempColor()[1];
				m_pDcGpPointCloudImpl->m_choosedColors[index][2] = GetTempColor()[2];
			}
		}
	}
}
Пример #3
0
INT WINAPI StartRecording(HIDS* m_hCam, const char* strFilePath, INT quality) {
	AFX_MANAGE_STATE(AfxGetStaticModuleState());
	INT result = IS_SUCCESS;
	if (!m_nAviID) {
		result = isavi_InitAVI(&m_nAviID, *m_hCam);
	}
	if (result == IS_AVI_NO_ERR) {
		// Query image buffer geometry
		int nWidth, nHeight, xPos, yPos;
		int pnX, pnY, pnBits, pnPitch;
		
		is_InquireImageMem (*m_hCam, m_pcImageMemory, m_lMemoryId, &pnX,&pnY, &pnBits, &pnPitch);
		GetImageSize( *m_hCam, nWidth, nHeight );
		// Derive pixel pitch from buffer byte pitch
		INT pPitchPx=0;
		pPitchPx = (pnPitch * 8 ) / pnBits;
		nWidth =  nWidth /8 * 8; // width has to be a multiple of 8
		INT LineOffsetPx = pPitchPx - nWidth ;

		// Get actual framerate
		double newFPS;
		GetFrameRate(*m_hCam, newFPS);
		// Get image position 
		GetImagePos(*m_hCam, xPos, yPos);
		pnX = pnX == nWidth ? 0 : xPos;
		pnY = pnY == nHeight ? 0 : yPos;
		// Get color mode
		INT cMode = GetColorMode(*m_hCam);

		result |= isavi_SetImageSize( m_nAviID, cMode,
			nWidth, nHeight,
			pnX, pnY,
			LineOffsetPx);

		result |= isavi_OpenAVI(m_nAviID, strFilePath);
		// TODO image quality is hard coded to 75 for now
		result |= isavi_SetImageQuality (m_nAviID, quality);
		result |= isavi_SetFrameRate(*m_hCam, newFPS);
		result |= isavi_StartAVI(m_nAviID);
		// Set recording to true
		m_bRecording = TRUE;
		PostThreadMessage(m_renderThread->m_nThreadID, IS_THREAD_MESSAGE, IS_RECORDING, (LPARAM) m_bRecording);
		// Send avi id to render thread
		PostThreadMessage(m_renderThread->m_nThreadID, IS_THREAD_MESSAGE, SET_AVI_ID, (LPARAM) m_nAviID);
		TRACE("Recording started\n");
	}	
	return result;
}
Пример #4
0
//刷新选取颜色
void DcGp::DcGpPointCloud::RefreshChoosedColor()
{
	if (m_pDcGpPointCloudImpl->m_choosedColors.size() == 0)
	{
		return;
	}

	switch (GetColorMode())
	{
	case eAmplitudeLinearColor:
		break;
	case eFalseRangeColor:
		m_pDcGpPointCloudImpl->m_choosedColors = m_pDcGpPointCloudImpl->m_scalarColors;
		break;
	case eFalseHeightColor:
		m_pDcGpPointCloudImpl->m_choosedColors = m_pDcGpPointCloudImpl->m_scalarColors;
		break;
	case eFalseScalarColor:
		m_pDcGpPointCloudImpl->m_choosedColors = m_pDcGpPointCloudImpl->m_scalarColors;
		break;
	case eTrueLinearColor:
		if (HasColors())
		{
			//如果数据有真实颜色
			for (unsigned i = 0; i < Size(); ++i)
			{
				if (false == m_pDcGpPointCloudImpl->m_pointsChoosedState[i])
				{
					m_pDcGpPointCloudImpl->m_choosedColors[i] = m_pDcGpPointCloudImpl->m_rgbColors[i];
				}
			}
		}
		else
		{
			//数据没有真实颜色
			for (unsigned i = 0; i < Size(); ++i)
			{
				if (false == m_pDcGpPointCloudImpl->m_pointsChoosedState[i])
				{
					m_pDcGpPointCloudImpl->m_choosedColors[i] = GetTempColor();
				}
			}
		}
		break;
	case eTrueLogarithmicColor:
		break;
	case eSingleColor:
		for (unsigned i = 0; i < Size(); ++i)
		{
			if (false == m_pDcGpPointCloudImpl->m_pointsChoosedState[i])
			{
				m_pDcGpPointCloudImpl->m_choosedColors[i] = GetTempColor();
			}
		}
		break;
	case eDeviationColor:
		break;
	default:
		break;
	}
}