Пример #1
0
DWORD DVLib::ExecCmd(const std::wstring& cmd, const std::wstring& working_directory, int nShow)
{
    PROCESS_INFORMATION pi = { 0 };
    RunCmd(cmd, & pi, 0, working_directory, nShow);
    auto_handle pi_thread(pi.hThread);
    auto_handle pi_process(pi.hProcess);
    CHECK_WIN32_BOOL(WAIT_OBJECT_0 == WaitForSingleObject(pi.hProcess, INFINITE),
        L"WaitForSingleObject");
    DWORD dwExitCode = 0;
    CHECK_WIN32_BOOL(::GetExitCodeProcess(pi.hProcess, & dwExitCode),
        L"GetExitCodeProcess");
    return dwExitCode;
}
Пример #2
0
int main(int argc, char *argv[])
{
    if (argc != 4)
    {
        std::cout << "Usage: " << argv[0] << " [auth ip] [auth port] [ident]" << std::endl;
        return 1;
    }
    ahost = argv[1];
    aport = atoi(argv[2]);
    ident = argv[3];

#ifdef TEST_MODE
    //cv::namedWindow("Lepton", cv::WINDOW_AUTOSIZE);
    // Run a test function
    //test_lepton();
    //test_send_with_video();

    //test_grayscale_jpg();
    test_pansharpen();


#else
    // ACTUAL PROGRAM HERE
    VideoFeedClient *vclient = NULL;
    AuthenticationClient *auth = new AuthenticationClient(ahost, aport, std::string(ident));

    int attempts = 1;

    do
    {
        std::cout << "Attempting to authenticate... Attempt: " << attempts++ << std::endl;

        try
        {
            auth->authenticate();
        }
        catch (ConnectionError& ex)
        {
            std::cout << "Unable to connect to Firefly server" << std::endl;
        }
        catch (...)
        {
            std::cout << "Unknown error" << std::endl;
            throw;
        }

        sleep(1);

    } while (!auth->is_authenticated);



    vclient = new VideoFeedClient(auth->get_dyn_receiver_host(),
                                  auth->get_receiver_port(),
                                  auth->get_token());

    raspicam::RaspiCam_Cv *picam = new raspicam::RaspiCam_Cv();
    picam->set(CV_CAP_PROP_FORMAT, CV_8UC3);
    picam->set(CV_CAP_PROP_FRAME_WIDTH, PICAM_FRAME_WIDTH);
    picam->set(CV_CAP_PROP_FRAME_HEIGHT, PICAM_FRAME_HEIGHT);

    PiCameraContainer *pcc = new PiCameraContainer(picam);
    try
    {
        std::cout << "Opening pi cam" << std::endl;

        if (!picam->open())
        {
            throw PiCamOpenError();
        }
        sleep(1);
    }
    catch (PiCamOpenError)
    {
        std::cout << "Unable to open Pi camera. Is it connected?" << std::endl;
        return 1;
    }

    LeptonCamera *lep;
    LeptonCameraContainer *lpc;
    try
    {
        std::cout << "Initializing lepton camera" << std::endl;

         lep = new LeptonCamera();
         lpc = new LeptonCameraContainer(lep);
    }
    catch (...)
    {
        std::cout << "Unknown error while opening Lepton camera" << std::endl;
        throw;
    }

    std::thread pi_thread(pcc->run);
    std::thread lepton_thread(lpc->run);

    cv::Mat sharpened;
    PanSharpen ps(10, 1.);
    while (true)
    {
        cv::Mat thermal_frame = lpc->getLatestFrame();
        cv::Mat visual_frame = pcc->getLatestFrame();

        ps.sharpen(thermal_frame, visual_frame, sharpened);

        vclient->send_frame(sharpened);

        cv::imshow("LIVE FEED", sharpened);

        cv::waitKey(1);
    }


#endif
    return 0;
}