質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

2891閲覧

opencvのimportでのエラーを解決したい

nao99

総合スコア10

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1グッド

0クリップ

投稿2020/03/11 14:16

前提・実現したいこと

プログラム初心者です。

ラズベリーパイで、カメラから画像を取り込み、画像処理するため、opencvをインストールしました。
その後、確認プログラムを作成したところ、以下の様な「importerorr」が発生しました。

エラーメッセージ

%Run test.py

Traceback (most recent call last):
File "/home/pi/test.py", line 1, in <module>
import cv2
File "/usr/local/lib/python3.7/dist-packages/cv2/init.py", line 3, in <module>
from .cv2 import *
ImportError: /usr/local/lib/python3.7/dist-packages/cv2/cv2.cpython-37m-arm-linux-gnueabihf.so: undefined symbol: __atomic_fetch_add_8

該当のソースコード

import cv2
print(cv2.version)

試したこと

どうようのエラーの対処方法をみつけたので、以下の操作を行いました。

LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1

以下、vimの編集など、良くわからず、実施出来ませんでした。

vim.tiny .bashrc
export LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1 #この一文を追加

補足情報(FW/ツールのバージョンなど)

raspberrypi3b
python3.7.3

Hiro527👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Vimを使わずに、他のテキストエディタを使えばいいのでは?
CLIでなければいけないのならば、nanoがおすすめですよ。
(nano [ファイル名]で編集できます)

投稿2020/03/11 14:50

Hiro527

総合スコア27

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nao99

2020/03/12 00:23

ご回答有難うございます。 初心者でして、vimで何をしようとしてるのかも分からず、CLIでなけらばいけないのかも分からない状況です。importerrorの対策として、他の処置方法は無いのでしょうか。
Hiro527

2020/03/12 00:27

恐らく、ホームディレクトリにある.bashrcというファイルに export LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1 という一文を追記すれば良いのだと思います。 ご存知かと思いますが、vimやnanoはコマンドプロンプト上で使えるテキストエディタです。Raspbianを使っているのであれば、他のテキストエディタを使っても平気だと思います。 とりあえず↑のことをやってみて、無理でしたらもう一度教えて下さい。
nao99

2020/03/12 02:40

.bashrcのファイルが非表示でしたが、ホームディレクトリで見つかり変更修正出来ました。 端末ターミナルでは、opencv をバージョン表示出来て、認識しました。 しかし、そもそもの”importerror”の発生は、Pythonの開発環境「Thonny」で発生しており、こちらのエラーは変化はありませんでした。 確認のため、.bashrcの一文追加を削除してみましたが、端末ターミナルではエラーは発生しませんでした。
Hiro527

2020/03/12 02:54 編集

端末上で $ python test.py を実行すればエラーは出ないんですね? では、Thonnyと実行環境の連携がうまく行っていない可能性があります。 Thonnyの方で「Tools」→「Open System Shell...」で端末を開いて、 pip list を実行してください。その中にopencv-pythonが無ければ、 pip install opencv-python でインストール直してください。それで解決されるはずです。 それでもだめなら、考え直しましょう。
nao99

2020/03/12 08:56

はい。その通りです。 上記の通り、pip list を実行した結果、opencv-python 4.1.1.26が存在します。 パスが通っていない?とかはあるのでしょうか。
Hiro527

2020/03/12 09:42

pip listは【Thonnyから起動した】端末で確認したのでしょうか?インストールができていればインポートはできると思うのですが。
nao99

2020/03/12 09:51

Thonnyから起動した端末で確認しました。再度、Thonnyで test.pyを実行すると、やはり同様のエラーが発生します。
nao99

2020/03/12 12:03

はい。 このページを読みました。ライブラリのインストールは、実施したか曖昧だったので、再度実行しましたが、既に実行済みでした。 結果、再度、Thonnyで、test.pyを実行しましたが、結果は変わらずです。
Hiro527

2020/03/12 12:39 編集

ダメ押し感半端ないですが、Thonnyをrootユーザーとして起動してみてはどうでしょう? $ sudo thonny
nao99

2020/03/12 12:41

やはり、駄目ですね(>_<)
Hiro527

2020/03/12 12:43 編集

ライブラリをインストールしたPythonのバージョンは、どうでしょうか…? pip3でないと2.7.xの環境に入れられてしまいます Raspbianは標準ではPython2.7.xのはずなので…。 Thonnyで実行する際は恐らく自動的にPython 3.x.xを使ってると思うのですが
Hiro527

2020/03/12 12:45

参考までに $ sudo apt install python3 python3-pip
nao99

2020/03/12 12:49

Python3.7.3です。 アップグレードしたタイミングが、分かりませんが。
Hiro527

2020/03/12 12:53

ですよね…。 一応GitHubでこの方法を見つけたので試してみては? $ LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1 thonny &
nao99

2020/03/12 13:24

$ LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1 thonny & で立ち上がったThonnyで、test.pyを実行したら、4.1.1と表示されました。 一度、Thonnyを閉じて、直接Thonnyを、立ち上げてだと、エラーとなります。 毎回、端末からThonnyを立ち上げるのを避けるための対策は、どうしたら良いのでしょうか。
Hiro527

2020/03/12 14:09 編集

ホームディレクトリにある".bashrc"をテキストエディタで開き、 export LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1 を追記します。 そして、端末を開き、 $ source .bashrc を実行してください。これで解決されるはずです。 ですが、少しだけデメリットがあります。GitHubのフォーラムによると、この方法を行うとどんな実行ファイルでも実行時にlibatomic.so.1が読み込まれてしまうそうです。どんな副作用が出るかわかりませんが、一応伝えておきます。 一応、参考にしたページです→https://github.com/piwheels/packages/issues/59
nao99

2020/03/12 14:18

ご丁寧に有り難うございます。 ですが、 export LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1 を追記、 $ source .bashrcを実行済みです(>_<)
Hiro527

2020/03/12 22:52 編集

どうやら、【再起動をするとそのたびにもう一回】 $ source .bashrc を行わないといけないらしいので、.bashrcに source .bashrc を追加したほうが良いみたいです。
nao99

2020/03/13 00:44

今朝から、端末ターミナル(LXTerminal)で、pi@raspberrypi の表示が出なくなりました。 Thonnyから端末を立ち上げると、pi@raspberrypi が表示されます。 何回か、Rebootしましたが、状況は変わりません。
nao99

2020/03/13 00:51

ツールバーに、「ファイル」「編集」「ヘルプ」と表示されて、テキストファイルになっているようです。
nao99

2020/03/13 00:58

.bashrcに source .bashrの追加を削除(元に戻す)と、復帰しました。
nao99

2020/03/13 05:35

他のプログラムも、問題なく、端末、Thonnyから、正常に動作するようになりました。 長時間、有り難うございました。
Hiro527

2020/03/13 05:49

いえ、こちらこそありがとうございます。 あまり力になれなかったと思いますが、解決できたのであればこちらも嬉しいです:) これからもよろしくお願いします
Hiro527

2020/03/13 06:56

一つおまけ情報ですが、Raspbianのデスクトップのショートカットは編集できるので、コマンドのところを LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1 thonny & にすると使うのが楽かと。あと、エイリアスも便利かもしれないです
guest

0

OpenCVのバージョンを4.1.1.26から4.1.0.25へ変更することでも
解決することができました。

ラズパイのターミナルで下記コマンドを実行

bash

1sudo pip3 install opencv-python==4.1.0.25

状況によっては下記も必要です。

bash

1sudo pip3 install opencv-contrib-python==4.1.0.25

参考サイト
https://qiita.com/kakimochi/items/2ff45534f32270094e9b

投稿2020/03/13 22:29

kakimochi

総合スコア110

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nao99

2020/03/19 04:33

ご回答有難うございます。 sudo pip3 install opencv-python==4.1.0.25 で、すんなり解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問