https://qiita.com/igor-bond16/items/317cd1655a22caac323d
このサイトの手順通りにOpenCVをインストールしたのですが、
Python2ではインポートできましたが、肝心なPython3ではインポートできず、コアダンプが表示されました。
原因がわからずに困っています。
#Python3のモジュールPATH jetbot@jetbot-desktop:~/buildOpenCV$ python3 Python 3.6.9 (default, Dec 8 2021, 21:08:43) [GCC 8.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> print(sys.path) ['', '/usr/local/lib/python2.7/dist-packages/cv2/python-2.7/cv2.so', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/jetbot/.local/lib/python3.6/site-packages', '/usr/local/lib/python3.6/dist-packages', '/usr/local/lib/python3.6/dist-packages/Adafruit_GPIO-1.0.4-py3.6.egg', '/usr/local/lib/python3.6/dist-packages/Adafruit_MotorHAT-1.4.0-py3.6.egg', '/usr/local/lib/python3.6/dist-packages/jetbot-0.3.0-py3.6.egg', '/usr/local/lib/python3.6/dist-packages/pyserial-3.4-py3.6.egg', '/usr/lib/python3/dist-packages', '/usr/lib/python3.6/dist-packages'] #python3-opencvが入ってるPATH jetbot@jetbot-desktop:~/buildOpenCV$ dpkg -L python3-opencv /. /usr /usr/lib /usr/lib/python3 /usr/lib/python3/dist-packages /usr/lib/python3/dist-packages/cv2.cpython-36m-aarch64-linux-gnu.so /usr/share /usr/share/doc /usr/share/doc/python3-opencv /usr/share/doc/python3-opencv/copyright /usr/share/doc/python3-opencv/changelog.Debian.gz
「sys.path」から、ディレクトリ名からしてPython 3には関係無さそうな「/usr/local/lib/python2.7/dist-packages/cv2/python-2.7/cv2.so」を削除したら、どうなりますでしょうか?
あと、質問のOpenCVとは関係無いですが、「sys.path」にたくさんある「*.egg」は要るのでしょうか?
正しい手順でインストールしたら、たしか「…/dist-packages」とか「…/site-packages」とかまでを登録すれば、その中にあるのは探してくれたと思うのですが、「*.egg」も「sys.path」に追加しないと使えない(インポートできない)のでしょうか?
Python3.6にOpenCVであればNVIDIA SDK MANAGERからJetPackをインストールするときにOpenCVもオプションで入れられませんでしたか?
以前別件で回答を書いたことがありますが、JetsonはARMであるほか、いろいろ依存関係が激しいようで、公式の方法で入るOpenCVを使った方が手っ取り早いです。
※JetPack自体を再インストールするとOSも中身も一切合切消えてしまうのでオプションでJetPackではなくCUDAやVisionうんたらのほうを選ぶ必要があります。
https://teratail.com/questions/328386
時間をかけてエラーを一つ一つつぶしていけば自力コンパイルの道もありですが、JetPackのバージョンやほかの者のバージョン、QTかGTKかのようなところでも問題がごろごろしています。
コアダンプの詳細を教えてもらえればもう少し何とかなるかもしれません。
>>fourteenlengthさん
コアダンプの詳細が一切なく,ただコアダンプとしか出力されないのでこれ以上情報を伝えることはできないほか,JetBotを使用しており,販売元が配布しているイメージでないとモータ制御が厳しくなってしまうので,よろしくありません.
>>jbpb0さん
/usr/local/lib/python2.7/dist-packages/cv2/python-2.7/cv2.soを削除してみたところ,python2でもエラーが出るようになり,Python3では全く状況は変わらずコアダンプします.
> python2でもエラーが出るようになり
Python 3の環境の話をしてるのに、何でPython 2の話が出てくるのでしょうか?
もしかして、Python 2とPython 3でsys.pathの設定を共用してます?
もしそうしてるなら、それはダメです
(この質問の内容とは別に)
sys.pathに余計なものが無い状態で、cv2をインポートしたタイミングでコアダンプするのなら、コンパイルしたOpenCVが正しく作られてないのではないですかね
> コアダンプの詳細が一切なく,ただコアダンプとしか出力されないのでこれ以上情報を伝えることはできない
import faulthandler
というおまじないを書いておくとsegmentation fault (core dumped)の直前に何がどうなったかの片鱗は表示してくれるようになります。
以下私の経験です
配布なり自前コンパイルしたOpenCVが参照するGUIが環境にあるgtkやqtとかみ合わさっておらず、コアダンプでOpenCVがこけたことがあった気がします。imshowを使わない(OpenCVのGUIを切り捨てる)のであればheadlessのOpenCVがセーフモードのように働くかもしれません。
原因が判明しました。
JetsonでONNXを使ったのですが、ONNXをインストールした際に設定が変わったようで、
export OPENBLAS_CORETYPE=ARMV8
を打つと動き増ました。
回答1件
あなたの回答
tips
プレビュー