예제 #1
0
/*
 * 用于对图像数据的处理
 * */
JNIEXPORT jint JNICALL Java_com_nova_novapro_MainActivity_TransImage
  (JNIEnv *env, jobject obj)
{
	char* source = "/sdcard/capture/1.bmp";
	char* dest = "/sdcard/capture/dest1.bmp";
	int ret;
	int arrage;
	unsigned char* tmpBuffer;
	unsigned char* locationMark;
	RegionInfo regionInfo;

	regionInfo.xres = 32;
	regionInfo.yres = 16;

	int pic_size = picInfo.xres * picInfo.yres * picInfo.bpp;
	LOGD("pic_size=%d\n",pic_size);

	//为tmpBuffer分配内存
	tmpBuffer = (unsigned char*)malloc(pic_size);
	if(tmpBuffer == NULL){
		LOGD("malloc date error!");
	}

	//将bmp图像中的数据读取到tmpbuffer中
	ret = ReadBmp2Buffer(source,dest,&picInfo,tmpBuffer);
	//进行一个RGB到灰度值的转换
	ret = RGB2GREY(&picInfo,tmpBuffer);

	//获取图像的二值化阈值
	arrage = GetThreshold(&picInfo,tmpBuffer);
	LOGD("Threshold=%d\n",arrage);


	//将图片中小于arrage的数据设置为0 二值化
	Thresholding(arrage,&picInfo,tmpBuffer);

	//从图像中心开始对图像进行定位操作
	ret = locataImage(&picInfo,tmpBuffer,&regionInfo);

	//将date数据保存到bmp中
	ret = saveDate2BMP(&picInfo,tmpBuffer,dest);

	free(tmpBuffer);

	return ret;

}
예제 #2
0
bool SelectNodesOP::OnDraw() const
{
	if (DrawRectangleOP::OnDraw()) return true;

	if (m_node_selection.empty()) return false;

	CU_VEC<sm::vec2> nodes;
	int count = 0;
	for (size_t i = 0, n = m_node_selection.size(); i < n; ++i)
		count += m_node_selection[i]->selectedNodes.size();
	nodes.reserve(count);

	for (size_t i = 0, n = m_node_selection.size(); i < n; ++i)
	{
		auto& selectedNodes = m_node_selection[i]->selectedNodes;
		copy(selectedNodes.begin(), selectedNodes.end(), back_inserter(nodes));
	}

	s2::RVG::SetColor(pt2::Color(204, 102, 102));
	s2::RVG::Circles(nullptr, nodes, GetThreshold(), true);

	return false;
}
예제 #3
0
void QCmdParser::ParseDataDomain( QByteArray &data, QString& strInfo, qint8& nIndex )
{
    // data.length( ) >= 4

    qint32 nDomainLen = 4;

    if ( nDomainLen > data.length( ) ) {
        return;
    }

    qint32 nDI = data[ 0 ];
    nDI |= ( data[ 1 ] << 8 );
    nDI |= ( data[ 2 ] << 16 );
    nDI |= ( data[ 3 ] << 24 );

    data.remove( 0, nDomainLen );
    nDomainLen = data.length( );

    strInfo = "";

    switch ( nDI ) {
    case 0x04000300 :
        nIndex = 0;
        break;

    case 0x0400030C : // ƵÉÁ¹âÃô¿ØÖÆ
        GeLedtIlluminance( data, strInfo );
        nIndex = 1;
        break;

    case 0x04000301 : // ζÈ
        GetLedTemperature( data, strInfo );
        nIndex = 3;
        break;

    case 0x04000302 : // µÆ¹¤×÷״̬£¨00 =ƵÉÁ£»01=ÉÁ¹â£©Ä£Ê½
        GetLedWorkState( data, strInfo );
        nIndex = 4;
        break;

    case 0x04000303 : // ƵÉÁ´¥·¢·½Ê½£¨00=ÉÏÉýÑØ´¥·¢£»01=ϽµÑØ´¥·¢£»02=¸úËæģʽ£©Í¬²½
        GetLedFreqTriggerMode( data, strInfo );
        nIndex = 5;
        break;

    case 0x04000304 : // Êä³öÂö¿í0£¨°Ù·Ö±ÈÏÔʾ£©ÆµÉÁʱ¼ä
        GetLedFreqTime( data, strInfo );
        nIndex = 7;
        break;

    case 0x04000305 : // Êä³öÂö¿í1£¨°Ù·Ö±ÈÏÔʾ£©ÉÁ¹âʱ¼ä
        GetLedFlashTime( data, strInfo );
        nIndex = 8;
        break;

    case 0x04000306 : // Êä³öÂö¿í2£¨°Ù·Ö±ÈÏÔʾ£©ÆµÉÁÁÁ¶È
        GetLedFreqBrightness( data, strInfo );
        nIndex = 9;
        break;

    case 0x04000307 : // Êä³öÂö¿í3£¨°Ù·Ö±ÈÏÔʾ£©ÉÁ¹âÁÁ¶È
        GetLedFlashBrightness( data, strInfo );
        nIndex = 10;
        break;

    case 0x04000308 : // ƵÉÁƵÂÊ
        GetLedFrequency( data, strInfo );
        nIndex = 13;
        break;

    case 0x04000309 : // LEDµÆ¹¤×÷µçѹ
        GetLedWorkVoltage( data, strInfo );
        nIndex = 14;
        break;

    case 0x0400030A : // Íⲿ´¥·¢ÐźÅ״̬£¨00= Õý³££»01 = Òì³££©
        GetLedExternalTriggerSignalState( data, strInfo );
        nIndex = 15;
        break;

    case 0x0400030B : // ÉÁ¹â´¥·¢·½Ê½£¨00=ÉÏÉýÑØ´¥·¢£»01=ϽµÑØ´¥·¢£»02=¸úËæģʽ£©Í¬²½
        GetLedFlashTriggerMode( data, strInfo );
        nIndex = 6;
        break;

    case 0x0400030E : // ƵÉÁ¹âÃô·§Öµ
        GetThreshold( data, strInfo );
        nIndex = 11;
        break;

    case 0x0400030F : // ÉÁ¹â¹âÃô·§Öµ
        GetThreshold( data, strInfo );
        nIndex = 12;
        break;

    case 0x0400030D : // ÉÁ¹â¹âÃô¿ØÖÆ
        GeLedtIlluminance( data, strInfo );
        nIndex = 2;
        break;

    case 0x04000310 : // ֡Ƶ¿ØÖÆ
        GetFrameFreqControl( data, strInfo );
        nIndex = 16;
        break;
    }
}
예제 #4
0
bool SelectNodesOP::OnMouseLeftDown(int x, int y)
{
	sm::vec2 pos = m_stage->TransPosScrToProj(x, y);
	ChainSelectedNodes* selected = NULL;
	m_shape_impl->TraverseShapes(PosQueryVisitor(pos, &selected), ee::DT_VISIBLE);
	if (selected)
	{
		if (m_stage->GetKeyState(WXK_CONTROL))
		{
			bool isExist = false;
			for (size_t i = 0, n = m_node_selection.size(); i < n && !isExist; ++i)
			{
				ChainSelectedNodes* chainNodes = m_node_selection[i];
				if (chainNodes->polyline != selected->polyline) continue;
				for (size_t j = 0, m = chainNodes->selectedNodes.size(); j < m && !isExist; ++j)
				{
					if (sm::dis_pos_to_pos(pos, chainNodes->selectedNodes[j]) < GetThreshold())
					{
						chainNodes->selectedNodes.erase(chainNodes->selectedNodes.begin() + j);
						if (chainNodes->selectedNodes.empty())
							m_node_selection.erase(m_node_selection.begin() + i);
						isExist = true;
					}
				}
			}

			if (!isExist)
				m_node_selection.push_back(selected);
			else
				delete selected;
		}
		else
		{
			bool isExist = false;
			for (size_t i = 0, n = m_node_selection.size(); i < n && !isExist; ++i)
			{
				ChainSelectedNodes* chainNodes = m_node_selection[i];
				if (chainNodes->polyline != selected->polyline) continue;
				for (size_t j = 0, m = chainNodes->selectedNodes.size(); j < m && !isExist; ++j)
				{
					if (sm::dis_pos_to_pos(pos, chainNodes->selectedNodes[j]) < GetThreshold())
						isExist = true;
				}
			}

			if (!isExist)
			{
				ClearSelectedNodes();
				m_node_selection.push_back(selected);
			}
			else
				delete selected;
		}

		m_first_pos.MakeInvalid();
	}
	else
	{
		DrawRectangleOP::OnMouseLeftDown(x, y);
		m_first_pos = pos;
		if (!m_stage->GetKeyState(WXK_CONTROL))
			ClearSelectedNodes();

	}

	return false;
}