Example #1
0
void CBaseMuxerFilter::AddInput()
{
	POSITION pos = m_pInputs.GetHeadPosition();
	while(pos)
	{
		CBasePin* pPin = m_pInputs.GetNext(pos);
		if(!pPin->IsConnected()) return;
	}

	CStringW name;

	name.Format(L"Input %d", m_pInputs.GetCount()+1);

	CBaseMuxerInputPin* pInputPin = NULL;
	if(FAILED(CreateInput(name, &pInputPin)) || !pInputPin) {ASSERT(0); return;}
	CAutoPtr<CBaseMuxerInputPin> pAutoPtrInputPin(pInputPin);

	name.Format(L"~Output %d", m_pRawOutputs.GetCount()+1);

	CBaseMuxerRawOutputPin* pRawOutputPin = NULL;
	if(FAILED(CreateRawOutput(name, &pRawOutputPin)) || !pRawOutputPin) {ASSERT(0); return;}
	CAutoPtr<CBaseMuxerRawOutputPin> pAutoPtrRawOutputPin(pRawOutputPin);

	pInputPin->SetRelatedPin(pRawOutputPin);
	pRawOutputPin->SetRelatedPin(pInputPin);

	m_pInputs.AddTail(pAutoPtrInputPin);
	m_pRawOutputs.AddTail(pAutoPtrRawOutputPin);
}
Example #2
0
//!***************************************************************
//! @details:
//! initializes the game and subsystems
//!
//! @return: 
//! void
//! 
//!***************************************************************
void Game::Init()
{
	// load the game map
	CreateMap();

	// initialize the cameras and view
	InitView();

	// initialize the user input
	CreateInput();

	// prep the engine for running
	m_engine->initializePumping();
}
Example #3
0
char OcrNet::Run(cv::Mat &image, ImageRegion image_region)
{
	fann_type *input, *output;
	char ret_val = 'A';
	float max_val = LOWER_VAL;
	int max_val_index = -1;

	input = new fann_type[Ann[0]->num_input];

	CreateInput(input, Ann[0]->num_input, image, image_region);

	for(int j=0; j < DataSetSize; j++)
	{
		output = fann_run(Ann[j], input);

		std::cout << std::endl << "Printing Output:" << std::endl;

		for(unsigned int i=0; i < Ann[j]->num_output; i++)
		{
			float value = output[i];

			std::cout << value << " ";

			if(value >= max_val)
			{
				max_val = value;
				max_val_index = i;
			}
		}
	}

	std::cout << std::endl;

	ret_val += max_val_index;

	return ret_val;
}
Example #4
0
void OcrNet::Train(cv::Mat &image, std::map< int, std::set<ImageRegion> > &image_lines, std::string &char_set)
{
	std::map<int, std::set<ImageRegion> >::iterator image_lines_it;
	std::set<ImageRegion> regions;
	std::set<ImageRegion>::iterator regions_it;
	unsigned int char_count = 0, char_length = 0, repeat = 2, index = 0;
	struct fann_train_data **data;
	fann_type **inputs, **outputs;

	char_length = char_set.length();
	data = new struct fann_train_data* [char_length];

	for(uint j=0; j < char_length; j++)
	{
		data[j] = new struct fann_train_data;
		data[j]->num_data = repeat;
		data[j]->num_input = Ann[j]->num_input;
		data[j]->num_output = Ann[j]->num_output;
		inputs = new fann_type*[data[j]->num_data];
		outputs = new fann_type*[data[j]->num_data];
		data[j]->input = inputs;
		data[j]->output = outputs;

		for(uint i = 0; i < repeat; i++, char_count = 0)
		{
			for(image_lines_it = image_lines.begin();
					char_count < char_length && image_lines_it != image_lines.end();
					image_lines_it++, char_count++)
			{
				regions = (std::set<ImageRegion>) image_lines_it->second;

				for(regions_it = regions.begin();
						char_count < char_length && regions_it != regions.end();
						regions_it++, char_count++)
				{
					index = i * char_length + char_count;
					inputs[index] = new fann_type[data->num_input];
					outputs[index] = new fann_type[data->num_output];
					CreateInput(inputs[index], data->num_input, image, *regions_it);
					CreateOutput(outputs[index], data->num_output, char_count);

					std::cout << "Repeat Index: " << i << ", index: " << index << std::endl;
				}
			}
		}

		fann_randomize_weights(Ann[j], -0.001, 0.0);
		//	fann_init_weights(Ann, data);
		fann_train_on_data(Ann[j], &data[j], MaxEpochs, 10, Error);

		for(unsigned int i=0; i < data[j]->num_data; i++)
		{
			delete [] inputs[i];
			delete [] outputs[i];
		}
	}

	delete data;
	delete [] inputs;
	delete [] outputs;
}
Example #5
0
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR cmdLine, int cmdShow) {
#else
int main(int argc, char** argv) {
#endif
  // Start by opening a debug log.
  Debug::openLog(true);
  Debug::logger->message("\n ----- Engine Loading -----");

  if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) < 0) {
    Debug::logger->message("Error: Could not load SDL");
    Destroy();
    return 1;
  } else {
    Debug::logger->message("SDL loaded..");
  }

  // Setup OpenGL.
  SDL_GL_SetAttribute(SDL_GL_RED_SIZE,            5);
  SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE,          5);
  SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE,           5);
  SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER,        1);

  flags = SDL_OPENGL | SDL_HWSURFACE | SDL_RESIZABLE;

  screen = SDL_SetVideoMode(windowWidth, windowHeight, 32, flags);
  Debug::logger->message("Video mode set..");

  if(Mix_OpenAudio(44100, AUDIO_S16, 2, 4096)) {
    Debug::logger->message("Audio opened..");
  }

  if(TTF_Init()) {
    Debug::logger->message("SDL_ttf initialized.\n");
  }

  info = SDL_GetVideoInfo();
  if(!info) {
    // This should never accur.
    Debug::logger->message("Video query failed!");
    Destroy();
    return 1;
  }

  SDL_WM_SetCaption("LibD", NULL);

  srand((unsigned int)time(NULL));

  Debug::logger->message("\n ----- Engine Initialization Complete -----");
  Debug::logger->message("\n ----- Logic -----");

  Game game;
  game.Init();
  CreateInput();

  Uint32 timeStart = SDL_GetTicks();
  float dt = 1.0f / 60.0f;

  // We need to give OnResize()'s width and height params an initial value
  // Otherwise it is just garbage, and the orthorgraphic view
  // screws up for me. -- Allanis.
  game.OnResize(windowWidth, windowHeight);

  while(game.IsRunning()) {

    while(SDL_PollEvent(&event)) {
      if((event.type == SDL_QUIT) || KeyStillDown(SDLK_ESCAPE)) {
        game.SetRunning(false);
        break;
      }
      if(event.type == SDL_VIDEORESIZE) {
        // Resize the window.
        ResizeWindow(game, event.resize.w, event.resize.h);
        break;
      }
    }

    UpdateInput();
    game.Prepare(dt);
    game.ProcessEvents(dt);
    game.Render();
    SDL_GL_SwapBuffers();

    Uint32 timeEnd = SDL_GetTicks();
    dt = (float)(timeEnd - timeStart) / 1000.0f;
    timeStart = timeEnd;
  }

  game.Shutdown();

  Destroy();

  Debug::closeLog();
  return 0;
}