在Mac OS X 10.10.2上使用waitKey的opencv imshow太慢(使用c ++)

我在Mac OS X 10.10.2上使用opencv c ++来处理视频帧并显示它们。 用waitKey显示视频的imshow性能非常慢。

我有以下代码正确显示HD(1920x1080)灰度帧,除了它运行速度太慢(即每秒2到3帧而不是每秒30帧)10次之外。

          cv::Mat framebuf[TEST_COUNT];

    //--- Code here to allocate and fill the frame buffer with about 4 seconds of video. This part works correctly.

        //--- This loop runs too slow by factor of approximately 10x
    for (int f = 0; f < TEST_COUNT; f++)
    {
        cv::imshow(windowName, framebuf[f]);
        cv::waitKey(33);
    }

任何人都可以建议如何从opencv imshow()获得实时或接近实时的性能吗? 我看过很多文章说他们正在实时显示视频,甚至比实时更快,所以我不确定我做错了什么。 任何帮助将不胜感激。


我可能是错的,但对我来说,问题不在于你的代码,而在于你的操作系统/配置。 我写了一个小测试:

import cv2
import numpy as np
from random import randrange
img = np.zeros((1920, 1080), dtype = np.uint8)
counter = 0
while counter < 1000:
    cv2.line(img, (randrange(0, 1920), randrange(0, 1080)), (randrange(0, 1920), randrange(0, 1080)), (randrange(0, 255)))
    cv2.imshow('test', img)
    temp = cv2.waitKey(1)
    counter += 1
    print counter

在我的机器上(Core 2 duo 2,6Ghz x64,8gb ram,ssd)完成这个测试需要大约30秒。 运行它,如果你会比definitelly明显更多的时间,你的笔记本电脑/ opencv配置/等等有问题。 我在Mac OS X上使用OpenCV 2.4.x(我认为它是10.9)并且运行良好。 重新安装OpenCV是我想到的最明显的解决方案。 当你删除OpenCV时,使用brew重新安装它 - brew install opencv --with-tbb --with-python --with-ffpmeg (或类似的东西 - 使用brew options opencv检查)应该没问题。 第一个选项告诉brew使用tbb(线程构建模块 - 用于多线程的库,有时可以显着提高速度)构建opencv,第二个选项用于安装python包装器,最后一个用于安装ffmpeg(处理编解码器等)。


你将不得不减少输入到函数等待键。 尝试使用范围在2到5之间的较低数字。 它还取决于您同时运行的其他进程,请尝试关闭其他进程并查看是否改进

链接地址: http://www.djcxy.com/p/95063.html

上一篇: opencv imshow with waitKey too slow on Mac OS X 10.10.2 (using c++)

下一篇: cvWaitKey() slowing capture process significantly