我正在尝试从连续的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);
}
感谢您的帮助!
答案 0 :(得分:4)
感谢Micka和Jaka Konda,我可以将延迟降至最低。首先,我通过将它们放在Mats
循环之前预先分配While
。然后,以Release
模式编译应用程序。这一步骤大大提高了速度。
更新 -
我找到了另一种方法,可以将速度提高一千倍 - 使用CUDA OpenCV。 (它可以与Visual Studio 2015一起使用,即使使用Visual Studio 2013库也是如此。)