如何解决ImportError:无法在python中导入名称splitfn

时间:2016-04-07 04:52:47

标签: python windows raspberry-pi camera-calibration

我已经在我的calibrate.py文件中编写了校准相机的代码,但是当我运行该文件时它显示错误,例如,ImportError:无法导入名称splitfn ..so如何解决这个问题?...我已经运行了这个文件使用此命令:

sudo python calibrate.py image4.jpg calibration.yaml --debug-dir out

这是执行此脚本的正确命令吗?如果有任何更改,则plz建议我..我拍摄的校准图像(我已作为输入)和输出(RMS,相机矩阵,失真系数)存储在校准中.yaml文件?我需要制作这个文件还是自动创建?

3 个答案:

答案 0 :(得分:1)

看起来你没有得到代码存储库的其余部分。这行找不到common.py,它是定义splitfn函数的地方:

来自普通导入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的相同路径,则可以尝试--debug ./

不确定--square_size到底是什么,但默认为1 最后一个输入是图像的路径或名称,如果它与校准脚本位于同一目录中 - 如果image4.jpg是您的图像,并且您想使用默认值写入当前路径,那么我认为:

sudo python calibrate.py --debug ./ --square_size 1 image4.jpg

答案 1 :(得分: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

答案 2 :(得分:0)

splitfn仅提供输入文件的路径,file_name(不带ext)和ext。 一个人可以使用下面的实现方法。

#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]