OpenCV Camera Low FPS

I set the camera similarly in C++. The FPS was not improved. I think @crackwitz is right. The lighting is the major problem.


#include "opencv2/opencv.hpp"
#include <opencv2/videoio.hpp>
#include <opencv2/videoio/registry.hpp>
#include <time.h>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    std::vector<VideoCaptureAPIs> backends = cv::videoio_registry::getBackends();
    for (auto& backend : backends)
    {
        std::cout << backend << "," << cv::videoio_registry::hasBackend(backend) << "," << cv::videoio_registry::getBackendName(backend) << std::endl;
    }	


    // Start default camera
    VideoCapture video;

    int deviceID = 0;             // 0 = open default camera
    int apiID = cv::CAP_V4L2;      // 0 = autodetect default API
    //int apiID = cv::CAP_FFMPEG;
    // open selected camera using selected API
    video.open(deviceID, apiID);
    if (!video.isOpened()) {
        std::cerr << "ERROR! Unable to open camera" << std::endl;
        return -1;
    }

    video.set(CAP_PROP_FOURCC, cv::VideoWriter::fourcc('M', 'J', 'P', 'G'));
    // With webcam get(CV_CAP_PROP_FPS) does not work.
    // Let's see for ourselves.
    video.set(CAP_PROP_FPS, 30);

    // double fps = video.get(CV_CAP_PROP_FPS);
    // If you do not care about backward compatibility
    // You can use the following instead for OpenCV 3
    double fps = video.get(CAP_PROP_FPS);
    cout << "Frames per second using video.get(CAP_PROP_FPS) : " << fps << endl;

    // Number of frames to capture
    int num_frames = 120;

    // Start and end times
    time_t start, end;

    // Variable for storing video frames
    Mat frame;

    cout << "Capturing " << num_frames << " frames" << endl ;

    // Start time
    time(&start);

    // Grab a few frames
    for(int i = 0; i < num_frames; i++)
    {
        video >> frame;
    }

    // End Time
    time(&end);

    // Time elapsed
    double seconds = difftime (end, start);
    cout << "Time taken : " << seconds << " seconds" << endl;

    // Calculate frames per second
    fps  = num_frames / seconds;
    cout << "Estimated frames per second : " << fps << endl;

    // Release video
    video.release();
    return 0;
}