1

以下の openCV コードは、2 台のカメラから同時に画像を取得します。両方のカメラが 1 つの USB 2.0 ハブに接続されている Windows では問題なく動作します。Linux で同じコードを試すと、一度に 1 台のカメラに十分な帯域幅しかありません。また、同じ問題で guvcview を使用して 2 つのストリームを同時に表示しようとしました。私が必要としているのは、おそらくドライバーが要求する帯域幅の量を設定することによって、Web カメラを強制的に連携させる何らかの方法です。

capture = cv.CaptureFromCAM(0)
capture2 = cv.CaptureFromCAM(1)

while True: 
    frame = cv.QueryFrame(capture)
    frame2 = cv.QueryFrame(capture2)
    cv.ShowImage("w1", frame)
    cv.ShowImage("w2", frame2)    
    if cv.WaitKey(10) != -1:
        break
4

3 に答える 3

2

Web カメラ (LifeCam Cinema) にも USB 帯域幅の問題があり、uvcvideo ドライバーのFIX_BANDWIDTH癖を使用して解決しました。quirk の使用の詳細については、この回答を参照してください。

私が試したいくつかの USB ホスト コントローラーでは、気まぐれではありませんが、2 つの LifeCam が (コントローラーごとに) 動作しました。他の人にとっては、1つだけです。ここに私のマシン ビジョン マシンの 1 つのコントローラーがあります。

uli@KL04:~$ lspci | grep USB
00:1a.0 USB controller: Intel Corporation C600/X79 series chipset USB2 Enhanced Host Controller #2 (rev 06)
00:1d.0 USB controller: Intel Corporation C600/X79 series chipset USB2 Enhanced Host Controller #1 (rev 06)
03:00.0 USB controller: VIA Technologies, Inc. Device 3483 (rev 01)
0a:00.0 USB controller: ASMedia Technology Inc. Device 1142
0b:00.0 USB controller: ASMedia Technology Inc. Device 1142

(Intel および ASMedia コントローラーはマザーボード上にあり、VIA は PCIe カード上にあります。) 癖がなければ、各 ASMedia コントローラーは 1 つの LifeCam のみをサポートしていました。

于 2016-01-14T22:53:57.237 に答える
1

問題は、カメラが Windows ドライバーである種のビデオ圧縮を実行しているのに対し、Linux では圧縮されていない状態で、より高いデータ レートで実行されている可能性があることです。

その場合、それらを異なる USBバスに配置して、Linux で同時に両方を動作させる必要がある場合があります。これには、システムに PCI または PCIe USB カードを追加する必要がある場合があります。多くのマザーボードは、USB2.0 高速バスを 1 つしか実装していません。

于 2011-07-14T04:24:19.217 に答える
1

より低い解像度またはフレーム レートを使用して帯域幅を減らすように Web カメラを構成できますか?

于 2011-07-14T05:37:35.390 に答える