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); }
//!*************************************************************** //! @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(); }
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; }
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; }
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; }