當熟悉完程式碼後,真正開始製作專題時,一定會發生有關Python lib(import路徑)的問題,以下我拿openCV裡的facedetect.py作為範例,目標是將 facedetect.py 從C槽移至D槽並將其import的檔案放到另一個資料夾中以利於做出區隔。
P.s 斜體字並不是必要步驟,多半是為了方便講解或是想說一個思考流程,若覺得太囉嗦就跳過吧。
1.一開始我們來到了存放 facedetect.py的資料夾
2.再來我在D槽新增了一個叫做 catchface的資料夾
現在裡面還是空的
3.然後將 facedetect.py 丟進剛剛建的資料夾裡
4.雖然知道一定會錯誤,我們還是執行一次facedetect.py,來看看會出現什麼錯誤訊息
很清楚的,上面說我們沒有 video 的模組
5.
看一下facedetect.py的程式碼會發現,裡面有import兩個檔案,分別是video和common檔案。
再來我們回到將原本C槽下的資料夾,在裡面找到了video和common檔案,我們將這兩個複製到我們的D槽資料夾下。
這樣就可以執行了。
(但 facedetect.py裡有一些外援的XML檔案,這邊的相對路徑也須調整才會真正達到捕捉臉部的功能,下面會有相關解說)
6.
再來,我們為了未來管理方便,要將import的檔案放到另個資料夾,所以我在這邊又新增個lib的資料夾
將video和common檔案剪貼過去
7.
當然,如果又這樣直接去執行 facedetect.py 就會出現 4.的情況了
所以我們要在程式碼裡加上有關路徑的位置。
import sys
sys.path.append(“./lib/”)
這樣就完成了~((煙火
8.
但是就像 5.最後說的,在facedetect.py裡其實還有一些相對路徑必須做出更改。
所以我們先找到要做更改的兩行。
然後我們再次回到C槽,順這這兩行的路徑去找,果然發現了一個data資料夾
將data資料夾複製到我們的資料夾下。
再來只要改路徑即可
原來:
cascade_fn = args.get(‘–cascade’, “../../data/haarcascades/haarcascade_frontalface_alt.xml”)
nested_fn = args.get(‘–nested-cascade’, “../../data/haarcascades/haarcascade_eye.xml”)
更改後
cascade_fn = args.get(‘–cascade’, “./data/haarcascades/haarcascade_frontalface_alt.xml”)
nested_fn = args.get(‘–nested-cascade’, “./data/haarcascades/haarcascade_eye.xml”)
這樣就真正的完成了~