組込みソフト
OpenCVが使えない 2020/11/10
画像処理をPythonでやってみようとOpenCVをインストールしました。Pythonは3.Xです。pipを使えば簡単にインストールできます。

$pip3 install opencv-python

これで完了です。
早速Pythonでプログラムを書いてみると、
 import cv2
でエラーが発生。

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
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

OpenCVが使えない!一丁目目一番地でエラー発生です。これってよくある不具合のようです。対策方法がネットで紹介されています。しかし、自分の環境では解決しませんでした。Visual Studio Codeでバージョンアップしたら動かなくなった!というのを思い出しOpenCVが使えないの現状と違うバージョンをいれたら解決しないだろうか?ということで、まずはOpenCVのアンインストール。
$pip3 uninstall opencv-python
Uninstalling opencv-python-4.1.1.26:
Would remove:
/usr/local/lib/python3.7/dist-packages/cv2/*
/usr/local/lib/python3.7/dist-packages/opencv_python-4.1.1.26.dist-info/*
Proceed (y/n)?

OpenCVのバージョンは4.1.1.26:です。yをキーインしてアンインストールします。

opencv-pythonはバージョンを指定してインストールできます。バージョンを調べるには存在しないバージョン0.0にします。

$pip3 install opencv-python==0.0
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting opencv-python==0.0
Could not find a version that satisfies the requirement opencv-python==0.0 (from versions: 3.4.2.16, 3.4.2.17, 3.4.3.18, 3.4.4.19, 3.4.6.27, 3.4.7.28, 3.4.10.37, 3.4.11.39, 3.4.11.41, 3.4.11.43, 3.4.11.45, 4.0.1.24, 4.1.0.25, 4.1.1.26, 4.3.0.38, 4.4.0.40, 4.4.0.42, 4.4.0.44, 4.4.0.46)
No matching distribution found for opencv-python==0.0

たくさんあります。4.1.1.26の1つ前のバージョンでは正常に動いていたであろう。という根拠に乏しい選択で4.1.0.25でやってみました。

$pip3 install opencv-python==4.1.0.25

import cv2でエラーが出なくなりました。

OSは最新版にしています。しかし、残念ながらエラーの出るOpenCVがインストールされてしまっているようです。この不具合は2019年からあったようです。