69

ctypes を使用して Python コード内から使用できる共有ライブラリにプログラムをコンパイルしようとしています。

ライブラリは、次のコマンドを使用して正常にコンパイルされます。

g++ -shared -Wl,-soname,mylib -O3 -o mylib.so -fPIC [files] `pkg-config --libs --cflags opencv`

ただし、ctypesを使用してインポートしようとすると

from ctypes import *
mylib = CDLL("/path/to/mylib.so")
print mylib.test() // Expected output: Hello World

次のエラーが表示されます。

libdc1394 error: Failed to initialize libdc1394

どうしたの?

4

7 に答える 7

186

誰も実際に具体的な解決策を示していないことに非常にイライラします。OpenCVをインストールした後、この問題が発生しました。私にとって、この警告を削除する最も簡単な解決策は、実際にはこのドライバーを無効にすることでした:

sudo ln /dev/null /dev/raw1394
于 2014-09-25T00:24:59.503 に答える
31

libdc1394カメラのハードウェアを制御するためのライブラリです。リンクしているopencvが来ると思います。カーネルドライバーがロードされないのでしょうか?失敗する理由はいくつかあると思います。

おそらく、OpenCV の専門家の方がより適切に回答できるでしょう。しかし、問題はOpenCV lib側にあるに違いありません。

同じエラー メッセージの最初の検索では、同じ理由で結果が得られました[ 1、2 ]/dev/raw1394ファイルシステムで見つからない場合は、それらを試してください。

アップデート:

これは単なる警告のようです。モジュール raw1394 は廃止されたようで、一部の libdc1394 バージョンは、更新によって姿を消している間にそれを探している可能性があります。それを検索すると、多くの結果とバグ レポートが表示されます。しかし、ソフトウェアは正常に動作するはずです。したがって、本当に必要ない場合は、無視してかまいません。[ 3 , 4 ]

于 2012-10-02T11:23:53.900 に答える
9

わかった。私はそれに丸一日を費やしました。

基本的に、 と の間のリンクは永続的ではありません/dev/raw1394/dev/nullVM に bash して を呼び出すことができますln /dev/null /dev/raw1394が、それはコンテナーを再起動するまでしか持続しません。

私がしなければならなかったことは、コンテナの起動中にリンクを配置することです.

サービスとして実行することを考えましたが、単純な仕事には多すぎるように思えました。

私が最終的に仕事をするようになった方法 (きれいではありませんが、機能します) はCMD、Dockerfileの を変更することです。

CMD sh -c 'ln -s /dev/null /dev/raw1394'; <your-script-here>

于 2015-08-02T06:47:17.563 に答える
6

VirtualBoxで正確に実行されているUbuntuで同様の問題が発生しました。最初に、次の手順に従って OpenCV をインストールしました: https://help.ubuntu.com/community/OpenCV これにより、他の方法を試していたいくつかの問題が修正されましたが、libdc1394 の問題はまだ残っていました。

libdc1394 error: Failed to initialize libdc1394

前回の回答に対するゴランのコメントをようやく見ました

それで、virtualboxでUSBコントローラーを有効にしました....そして出来上がり!すべてが完璧に機能します!

ゴランありがとう!

于 2014-09-17T20:38:31.533 に答える
3

Docker イメージを使用する場合の別の回避策は、ボリュームをマウントすることです。

docker run -v /dev/null:/dev/raw1394

于 2016-11-14T06:50:16.470 に答える