はじめに
- 課外活動で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'
を解決すれば良さげ
解決
stackoverflowに
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
を入力
- その後、プログラムを動作させると無事動いた
終わりに
- 色々なサイトを眺めたので一つにまとめた
- 他のエラーが出ないことを祈る