3

ビデオフレームを処理して表示するために、Mac OS X 10.10.2 で opencv c++ を使用しています。ビデオを表示するための waitKey を使用した imshow のパフォーマンスは非常に遅くなります。

HD (1920x1080) グレースケール フレームを正しく表示する次のコードがありますが、実行速度が約 10 倍遅すぎます (つまり、毎秒 30 フレームではなく毎秒 2 ~ 3 フレーム)。

          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() からリアルタイムまたはほぼリアルタイムのパフォーマンスを得る方法を誰かが提案できますか? ビデオをリアルタイムで、またはリアルタイムよりも速く表示していると述べている多くの投稿を見てきました。そのため、何が間違っているのかわかりません。どんな助けでも大歓迎です。

4

4 に答える 4

1

私は間違っているかもしれませんが、私にとって問題はコードではなく、OS/構成にあります。私は小さなテストを書きました:

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 秒かかりました。それを実行して、間違いなく大幅に時間がかかる場合は、ラップトップ/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を構築するように指示し、2番目はpythonラッパーをインストールし、最後のオプションはffmpeg(ハンドルコーデックなど)をインストールします。

于 2015-02-21T02:57:09.147 に答える
0

関数待機キーへの入力を減らす必要があります。2 ~ 5 の範囲で小さい数値を使用してみてください。また、同時に実行している他のプロセスにも依存します。他のプロセスをシャットダウンして、改善するかどうかを確認してください

于 2015-02-19T00:00:10.417 に答える