簡體   English   中英

如何解決ImportError:無法在python中導入名稱splitfn

[英]How to solve ImportError: cannot import name splitfn in python

我在我的calibrate.py 文件中編寫了校准相機的代碼,但是當我運行該文件時,它顯示錯誤,例如,ImportError: cannot import name splitfn ..so 如何解決這個問題?...我已經使用這個命令運行了這個文件:

須藤python校准.py image4.jpg校准.yaml --debug-dir out

那么這個執行這個腳本的命令是正確的嗎?如果有任何變化,那么請建議我..我捕獲的用於校准的圖像(我已將其作為輸入)和輸出(RMS,相機矩陣,失真系數)存儲在calibration.yaml文件中?我需要制作這個文件還是它是自動創建的?

看起來您沒有獲得代碼存儲庫的其余部分。 這一行找不到定義 splitfn 函數的 common.py:

from common import splitfn

您應該獲取此代碼來自的存儲庫的 Python 目錄中的所有文件,或者至少獲取 common.py 應該可以解決您提供的示例錯誤。

https://github.com/Itseez/opencv/tree/master/samples/python

此外,OpenCv 示例代碼記錄了如何從其中調用代碼,因此不要認為您在調用中需要 .yaml 參數。

用法:calibrate.py [--debug] [--square_size] []

[--debug ] = 您希望將輸出圖像寫入的路徑 - 默認為 --debug: ./output/ -- 如果您希望將圖像寫入具有calibrate.py 的相同路徑,您可以嘗試-調試。/

不確定 --square_size 究竟是做什么的,但它默認為 1 最后一個輸入是圖像的路徑或名稱,如果它與校准腳本位於同一目錄中 - 如果 image4.jpg 是您的圖像並且您想使用默認值寫入當前路徑我會認為:

須藤 python 校准.py --debug ./ --square_size 1 image4.jpg

splitfn 只提供輸入文件的路徑、文件名(不帶擴展名)和擴展名。 可以使用以下實現。

#from common import splitfn
def splitfn(file_path):

    file_path_parts = file_path.split(sep=os.sep)
    _path = os.path.join(*file_path_parts[:-1])
    file_name = file_path_parts[-1]
    file_name_parts = file_name.split(sep='.')
    return _path, file_name_parts[0], file_name_parts[1]

https://github.com/opencv/opencv/blob/master/samples/python/common.py下載這個文件,或者你可以復制這個代碼並粘貼到calibrate.py

  • 這是從commom.py復制的代碼並將其粘貼到calibrate.py
def splitfn(fn):
    path, fn = os.path.split(fn)
    name, ext = os.path.splitext(fn)
    return path, name, ext

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM