在颜色检测中打开cvtColor太慢

时间:2016-02-21 10:50:35

标签: c++ opencv

我正在尝试从连续的IP摄像头输入中检测颜色,但cvtColor使代码变得非常慢。有没有办法直接检测实时视频中的颜色而不将 RGB 转换为 HSV ?这是我的代码 -

VideoCapture capture(The address of camera);
...
while (true)
{
    Mat frame;
    if (!capture.read(frame))
        break;
    imshow("Live Video", frame);
    Mat imgHSV;
    cvtColor(frame, imgHSV, COLOR_BGR2HSV); // <- This code makes the app sloooow !!!
    Mat imgThresholded;
    inRange(imgHSV, Scalar(lowH, lowS, lowV), Scalar(highH, highS, highV), imgThresholded);
    imshow("Thresholded Image", imgThresholded);
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

感谢Micka和Jaka Konda,我可以将延迟降至最低。首先,我通过将它们放在Mats循环之前预先分配While。然后,以Release模式编译应用程序。这一步骤大大提高了速度。

更新 -

我找到了另一种方法,可以将速度提高一千倍 - 使用CUDA OpenCV。 (它可以与Visual Studio 2015一起使用,即使使用Visual Studio 2013库也是如此。)