Raspbery Pi 3 で Python3環境にOpenCV3を突っ込んでみる

これらは、Google+でチョコチョコ書いた内容をまとめただけ。

 

Raspberry Pi 3 のPythonのバージョン

>>> import platform
>>> platform.python_version()
'3.5.3'

 

>>> import cv2
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
import cv2
ImportError: No module named 'cv2'

 

当然入ってない。

コマンドプロンプトからpip3でinstallする。

$ sudo pip3 install opencv-python
Collecting opencv-python
Downloading https://www.piwheels.org/simple/opencv-python/opencv_python-3.4.1.15-cp35-cp35m-linux_armv7l.whl (7.5MB)
100% |████████████████████████████████| 7.5MB 16kB/s
Requirement already satisfied: numpy>=1.12.1 in /usr/lib/python3/dist-packages (from opencv-python)
Installing collected packages: opencv-python
Successfully installed opencv-python-3.4.1.15

>>> import cv2
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import cv2
File "/usr/local/lib/python3.5/dist-packages/cv2/__init__.py", line 3, in <module>
from .cv2 import *
ImportError: libcblas.so.3: cannot open shared object file: No such file or directory

ライブラリが足りない。

 

apt-cache searchなどで探す。そして、libcblas3 libjasper1 libqt4-testをインストール。芋づる式にいろいろインストール。

$ sudo apt-get install libcblas3 libjasper1 libqt4-test

(略)

 

>>> import cv2
>>> cv2.__version__
'3.4.1'

これで、Python3+OpenCV3の環境の出来上がり。

 

picameraを使って静止画の取り込み。

----ここから----

import cv2
import picamera
import numpy

camera = picamera.PiCamera()
image = numpy.empty(camera.resolution.width * camera.resolution.height * 3, dtype=numpy.uint8)
camera.capture(image, 'bgr')
image = image.reshape( (camera.resolution.height, camera.resolution.width, 3) )
cv2.imshow("image", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

----ここまで----

 

picameraを使って動画表示

----ここから----

import cv2
import picamera
import numpy

camera = picamera.PiCamera()
image = numpy.empty(camera.resolution.width * camera.resolution.height * 3, dtype=numpy.uint8)
while (True):
    camera.capture(image, 'bgr')
    image = image.reshape( (camera.resolution.height, camera.resolution.width, 3) )
    cv2.imshow("image", image)
    if cv2.waitKey(1) >= 1 :
        break;
cv2.destroyAllWindows()

----ここまで----

後は、適当に遊びます。