はじめに
- 課外活動でpython3.6 + Opencv3.2 を使う機会があった
- import cv2は普通に動作したが、関数呼び出し時にエラーが出た
エラー
$ python3.6 demoOpenCV.py OpenCV(3.4.1) Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /io/opencv/modules/highgui/src/window.cpp, line 356 Traceback (most recent call last): File "demoOpenCV.py", line 4, in <module> cv2.imshow('img',img) cv2.error: OpenCV(3.4.1) /io/opencv/modules/highgui/src/window.cpp:356: error: (-215) size.width>0 && size.height>0 in function imshow Error in sys.excepthook: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook from apport.fileutils import likely_packaged, get_recent_crashes File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module> from apport.report import Report File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module> import apport.fileutils File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module> from apport.packaging_impl import impl as packaging File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 23, in <module> import apt File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module> import apt_pkg ModuleNotFoundError: No module named 'apt_pkg' Original exception was: Traceback (most recent call last): File "demoOpenCV.py", line 4, in <module> cv2.imshow('img',img) cv2.error: OpenCV(3.4.1) /io/opencv/modules/highgui/src/window.cpp:356: error: (-215) size.width>0 && size.height>0 in function imshow
ModuleNotFoundError: No module named 'apt_pkg'
を解決すれば良さげ
解決
cd /usr/lib/python3/dist-packages sudo cp apt_pkg.cpython-34m-i386-linux-gnu.so apt_pkg.so
すると動く、ということで実行してみると
apt_pkg.cpython-34m-i386-linux-gnu.so
はなかった- ls で確認すると
apt_pkg.cpython-35m-x86_64-linux-gnu.so
というよく似た名前があった - こいつをcpしてプログラムを動作させた
$ python3.6 demoOpenCV.py : cannot connect to X server
- エラーが変わってX server を入れたら良さげ
X server
- Xmingを入れた
- 起動後ターミナル内で
export DISPLAY=:0.0
を入力 - その後、プログラムを動作させると無事動いた
終わりに
- 色々なサイトを眺めたので一つにまとめた
- 他のエラーが出ないことを祈る