2018年11月28日

Install OpenCV in RPI3. Solved import cv2 error in python

1. 參考網路分享資料,安裝OpenCV
2. 裝好後,在Python 下,import cv2時,可能出現以下錯誤:
(py3cv4) pi@ath-rpi:~ $ python3
Python 3.5.3 (default, Sep 27 2018, 17:25:39)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
  File "", line 1, in
ImportError: No module named 'cv2'
>>>

很多教導安裝OpenCV的文章皆指出需在"/usr/local/lib/python3.5/site-packages/",出現cv2.so。我的RPI上,的確有這個檔案。
以python的錯誤訊息上網搜尋,推測可能是路徑參數不正確。先"import sys", 再執行"sys.path",可列出目前的python搜尋目錄:
(py3cv4) pi@ath-rpi:~ $ python3
Python 3.5.3 (default, Sep 27 2018, 17:25:39)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/home/pi/.virtualenvs/py3cv4/lib/python35.zip', '/home/pi/.virtualenvs/py3cv4/lib/python3.5', '/home/pi/.virtualenvs/py3cv4/lib/python3.5/plat-arm-linux-gnueabihf', '/home/pi/.virtualenvs/py3cv4/lib/python3.5/lib-dynload', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-arm-linux-gnueabihf', '/home/pi/.virtualenvs/py3cv4/lib/python3.5/site-packages']
>>>

很奇怪,沒有"/usr/local/lib/python3.5/site-packages/",但有"/home/pi/.virtualenvs/py3cv4/lib/python3.5/site-packages",所以我的解決方式是在後者下ln一個連結,即可。
(py3cv4) pi@ath-rpi:~/.virtualenvs/py3cv4/lib/python3.5/site-packages $ ln /usr/local/lib/python3.5/site-packages/cv2.so ./
(py3cv4) pi@ath-rpi:~/.virtualenvs/py3cv4/lib/python3.5/site-packages $ ls
cv2.so                  pip                 setuptools
easy_install.py         pip-18.1.dist-info  setuptools-40.6.2.dist-info
numpy                   pkg_resources       wheel
numpy-1.15.4.dist-info  __pycache__         wheel-0.32.2.dist-info
安裝教學文章內的最後一個驗證動作,正常出現了!
(py3cv4) pi@ath-rpi:~ $ python
Python 3.5.3 (default, Sep 27 2018, 17:25:39)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'4.0.0-alpha'
>>>



參考資料:

2018年8月2日

原來這裏還在 - 一個可以抒發個人想法,不需在意別人是否按讚的地方

將近十年前 (2009,隨著網路上的風潮寫下了我的第一篇部落格 (blog)。那時還沒有 Facebook, Twitter, Instagram 等社群網站,寫部落格成為個人抒發個人想法的最好方法之一。老實說,我很懶得發文,但總有時有想法要找出口,部落格是我的一個選項。後來 Facebook, Twitter 之類的社群網站出現了,除了可以發表個人意見、寫文意外,還可和眾多好友互動。用了幾年 Facebook,寫文章、轉佳文、打卡、發美食文、歡樂文,也從過程中獲得網友的互動。但因為對於隱私有些顧忌,所以漸漸不再上面發文了。時間久了,心裡有些圾垃沒地方倒,越來越覺得悶。今天隨意點選 Google 首頁,發現以前發部落格的 Blogger ,老實說有久別重逢的喜悅,特此發文一篇紀念一下。