ソースからビルドしたopencvをpythonで使用する

cv2モジュールをインポートしようとしたら以下のようなエラーが吐き出された。

import cv2
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-2-c8ec22b3e787> in <module>()
----> 1 import cv2

ModuleNotFoundError: No module named 'cv2'

opencv2はソースから既にビルド・インストール済みなので、これをjupyter notebookで使えるようにする必要がある。

スポンサーリンク

opencvをjupyterで使えるようにする

opencvをjupyterで使えるようにするには以下の手順を踏む必要がある。

!find / -name cv2.cpython-37m-x86_64-linux-gnu.so
/root/opencv-3.4.2/build/lib/python3/cv2.cpython-37m-x86_64-linux-gnu.so
cd ~/.pyenv/versions/3.7.0/envs/py370/lib/python3.7/site-packages
/root/.pyenv/versions/3.7.0/envs/py370/lib/python3.7/site-packages
!ln -s /root/opencv-3.4.2/build/lib/python3/cv2.cpython-37m-x86_64-linux-gnu.so cv2.so

これでopencvモジュールを使えるようになったはずなので確認する。

import cv2
print (cv2.__version__)
3.4.2

適当なコードでcv2をテストする

ここから拝借したコードを使ってopencv moduleをtestする。先ず最初にテストに使用する画像を以下のサイトからダウンロードする。

%download https://raw.githubusercontent.com/abidrahmank/OpenCV2-Python-Tutorials/master/data/messi5.jpg
Downloaded 'messi5.jpg'.
import cv2
import numpy as np
from matplotlib import pyplot as plt

plt.rcParams['figure.figsize'] = 20, 14
plt.rcParams["font.size"] = "18"

img = cv2.imread('messi5.jpg',0)
edges = cv2.Canny(img,100,200)

plt.subplot(121),plt.imshow(img,cmap = 'gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(edges,cmap = 'gray')
plt.title('Edge Image'), plt.xticks([]), plt.yticks([])

plt.show()

テストした結果全く問題がないことが分かった。

参考サイトhttps://github.com/