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

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

ただいまの
回答率

88.92%

Pythonでcv2とosをimportできません。

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 401

satosato

score 20

PythonでOpenCVを使おうとしましたが、実行時に次のようなエラーが表示されます。原因がわからないので教えて下さい。

エラーメッセージ
Traceback (most recent call last):
File "camera.py", line 2, in <module>
import cv2, os
ImportError: /usr/lib/arm-linux-gnueabihf/libopencv_legacy.so.2.4: undefined symbol: _ZN2kv14Fernlassifmms4readEVKN?_8FileNodeE

【追記】ソースコードと各種バージョンは以下の通りです。

from datetime import datetime
import cv2, os

def main():

  current_dir = os.path.dirname(os.path.abspath(__file__)) + '/'

  cam = cv2.VideoCapture(0)
  if cam == None:
    return False

  while True:
    _, img = cam.read()

    shoot_time = datetime.now()
    image_file = current_dir + shoot_time.strftime('%Y%m%d_%H%M%S%f') +'.jpg'

    cv2.imwrite(image_file, img)

    if cv2.waitKey(1) == 13: break

  cam.release()
  cv2.destroyAllWindows()

if __name__ == '__main__':
  main()

各種バージョン
$ apt search opencv | grep -e libopencv-dev -e python-opencv
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
libopencv-dev/oldstable,now 2.4.9.1+dfsg1-2 armhf [インストール済み]
python-opencv/oldstable,now 2.4.9.1+dfsg1-2 armhf [インストール済み]
$ python -V
Python 2.7.13
$ python3 -V
Python 3.5.3
$pip -V
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
pip 20.1.1 from /home/pi/.local/lib/python2.7/site-packages/pip (python 2.7)
$ pip3 -V
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
pip 20.1.1 from /home/pi/.local/lib/python3.5/site-packages/pip (python 3.5)

【追記2】
上記はPython2で実行しました。
上記の開発環境構築の手順は以下の通りです。

開発環境構築手順
$ apt -y install libopencv-dev python-opencv
$ pip install -U pip

また、Python3での実行を試みたところ、以下のエラーが出ました。

エラーメッセージPython3
Traceback (most recent call last):
File "camera.py", line 2, in <module>
import cv2, os
ImportError: No module named 'cv2'

長くなりましたが、何卒よろしくお願いします。

【追記3】

import cv2
import os


に変更したところ

エラー
Traceback (most recent call last):
File "camera.py", line 2, in <module>
import cv2
ImportError: No module named 'cv2'

となりました。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • can110

    2020/07/16 14:19

    そのコードはPython2,3どちらで実行したのか?
    OpenCVを使うために行った作業の詳細(環境構築の手順)を記載ください。

    キャンセル

  • branch

    2020/07/16 14:30

    こんにちは.
    can110様の内容に加えて,pythonの対話モードで
    import cv2とimport osを個々に行った際の挙動もお教えいただけませんでしょうか.

    キャンセル

回答 4

check解決した方法

0

公式のOpenCV4.3.0がインストールされた別のRaspiで上記のPythonプログラムを動かしたところ、正常に動作しました。非公式のビルド済パッケージの使用を避けたほうが良さそうです。
OpenCV4.3.0は以下のサイトのとおりにインストールしました。皆さん沢山のご回答をありがとうございました。

https://qengineering.eu/install-opencv-4.3-on-raspberry-pi-4.html

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

OpenCVは外部ライブラリなので事前にインストールする必要がありますが、インストールしていますか?
また、osは標準ライブラリなので

import os


とすればインポートできるはずです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

ラズパイへのOpenCVの導入は情報が多いわりには(だからこそ?)茨の道です。
ポイントはできるだけ最新で一次情報に近いと思われる情報を探すことです。

RaspberryPiへのOpenCVインストール手順■非公式のビルド済パッケージ(opencv-python)をインストールを試してみてはいかがでしょうか。ちなみにこれはPython3系での導入手順となっています。
Python2はサポート切れたので、できるだけ使わないようにしたほうがよいです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

こんにちは,早速の補足ありがとうございます.
cv2がインポートできないということはopenCVがインストールされていない,あるいは認識されていないという可能性が高いです.

今回の場合,
>$ apt -y install libopencv-dev python-opencv
ということですが,このaptコマンドはLinux本体にはインストールされているもののpythonにそれを認識させる作業が必要となるはずです.

簡単なのはpipコマンドの実行でしょうか.pip installを実行すればpythonのモジュールとしてインストールできるので,特別な操作なしにimport cv2することができるようになるでしょう.以下のコマンドをコマンドラインで実行後,再度camera.pyを実行してみてください.

pip install opencv-python

[補足]
ちなみに,import osは成功していますよ.
私も5年ほど前にラズパイにopencvを載せました.デビアンを入れるのに一週間とかかかりました.
苦労はお察しします.少しずつ前進しているはずなので頑張ってください!

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/07/16 15:14

    回答ありがとうございます。
    $ pip install opencv-python
    WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
    Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
    To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
    DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
    Defaulting to user installation because normal site-packages is not writeable
    Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
    ERROR: Could not find a version that satisfies the requirement opencv-python (from versions: none)
    ERROR: No matching distribution found for opencv-python

    とのことでした。Python2.7であることが関係しているみたいで、実際に貼られたURLも見ましたが、よくわかりませんでした(汗)

    キャンセル

  • 2020/07/16 15:30 編集

    お世話になっております.
    pip3 install opencv-pythonではいかがでしょうか.camera.py実行の際はpython3で実行ください.

    >WARNING: pip is being invoked by an old script wrapper.
    このエラーには遭遇したことがないので私の理解になりますが,pipの(pip3で実行した場合はpip3の)バージョンが古いことによる警告でしょうか.
    can110様がおっしゃる通り,python2.7は避けた方がよいです.現段階で使用する予定がなければ(あるいはよくわからないならば)とりあえずは2.7を無効化し3.x系を有効デフォルトにすることで,Web上の多くのソースコードが動かせるようになるでしょう.
    https://qiita.com/nagase/items/029e8fab5d783bbf2743
    この辺りを参考に設定変更してみてください.

    キャンセル

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

  • ただいまの回答率 88.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る