AlexeyAB
2018-03-20 101de2b07aa2feefa74f7e73876fd5cc8fc696cf
More stable web-cam
2 files modified
34 ■■■■ changed files
src/demo.c 6 ●●●●● patch | view | raw | blame | history
src/http_stream.cpp 28 ●●●● patch | view | raw | blame | history
src/demo.c
@@ -64,6 +64,7 @@
    in = get_image_from_stream_resize(cap, net.w, net.h, &in_img, use_webcam);
    if(!in.data){
        //error("Stream closed.");
        printf("Stream closed.\n");
        flag_exit = 1;
        return;
    }
@@ -166,6 +167,8 @@
    probs = (float **)calloc(l.w*l.h*l.n, sizeof(float *));
    for(j = 0; j < l.w*l.h*l.n; ++j) probs[j] = (float *)calloc(l.classes, sizeof(float *));
    flag_exit = 0;
    pthread_t fetch_thread;
    pthread_t detect_thread;
@@ -198,7 +201,7 @@
    }
    CvVideoWriter* output_video_writer = NULL;    // cv::VideoWriter output_video;
    if (out_filename)
    if (out_filename && !flag_exit)
    {
        CvSize size;
        size.width = det_img->width, size.height = det_img->height;
@@ -212,7 +215,6 @@
        //output_video_writer = cvCreateVideoWriter(out_filename, CV_FOURCC('X', 'V', 'I', 'D'), 25, size, 1);
        //output_video_writer = cvCreateVideoWriter(out_filename, CV_FOURCC('W', 'M', 'V', '2'), 25, size, 1);
    }
    flag_exit = 0;
    double before = get_wall_time();
src/http_stream.cpp
@@ -197,16 +197,32 @@
CvCapture* get_capture_webcam(int index) {
    CvCapture* cap = (CvCapture*)new cv::VideoCapture(index);
    CvCapture* cap = NULL;
    try {
        cap = (CvCapture*)new cv::VideoCapture(index);
        //((cv::VideoCapture*)cap)->set(CV_CAP_PROP_FRAME_WIDTH, 1280);
        //((cv::VideoCapture*)cap)->set(CV_CAP_PROP_FRAME_HEIGHT, 960);
    }
    catch (...) {
        std::cout << " Error: Web-camera " << index << " can't be opened! \n";
    }
    return cap;
}
IplImage* get_webcam_frame(CvCapture *cap) {
    cv::VideoCapture &cpp_cap = *(cv::VideoCapture *)cap;
    cv::Mat frame;
    cpp_cap >> frame;
    IplImage* src = cvCreateImage(cvSize(frame.cols, frame.rows), 8, frame.channels());
    *src = frame;
    IplImage* src = NULL;
    try {
        cv::VideoCapture &cpp_cap = *(cv::VideoCapture *)cap;
        cv::Mat frame;
        if (cpp_cap.isOpened()) {
            cpp_cap >> frame;
            src = cvCreateImage(cvSize(frame.cols, frame.rows), 8, frame.channels());
            *src = frame;
        }
    }
    catch (...) {
        std::cout << " Web-camera stoped! \n";
    }
    return src;
}