Python (摄像机校准)类型错误:预期Ptr<;cv::UMat>;对于参数';%s';

Python (摄像机校准)类型错误:预期Ptr<;cv::UMat>;对于参数';%s';,python,opencv,camera-calibration,Python,Opencv,Camera Calibration,摄像机校准过程中出现参数“%s”所需的错误。此错误的原因是什么,如何修复 def findCorner(img) : CHECKERBOARD=(6,9) criteria=(cv.TERM_CRITERIA_EPS+cv.TERM_CRITERIA_MAX_ITER,30,0.001) ret, corners=cv.findChessboardCorners(images,(6,9),None) corner_refine = cv.cornerSubPix(

摄像机校准过程中出现参数“%s”所需的错误
。此错误的原因是什么,如何修复

def findCorner(img) :
    CHECKERBOARD=(6,9)
    criteria=(cv.TERM_CRITERIA_EPS+cv.TERM_CRITERIA_MAX_ITER,30,0.001)
    ret, corners=cv.findChessboardCorners(images,(6,9),None)
    corner_refine = cv.cornerSubPix(images, corners, (11,11), (-1,-1), (cv.TERM_CRITERIA_EPS + cv.TERM_CRITERIA_MAX_ITER), criteria)
    corner_img = cv.drawChessboardCorners(images, CHECKERBOARD, corner_refine, ret)
    return ret, corner_refine, corner_img
objpoints = []
imgpoints = []
corner_imgs = []

for img in images : 

  ret, corner, corner_img = findCorner(img)

  if ret == True :
    objpoints.append(objp)
    imgpoints.append(corner)
    corner_imgs.append(corner_img)

您正在传递图像,可能是存储图像的字符串或文件夹位置。但是你的参数是img,你也可以循环图像。Opencv需要从您的“图像”文件夹中读取Opencv图像

因此,我将其改为:

ret, corners=cv.findChessboardCorners(img,(6,9),None)
corner_refine = cv.cornerSubPix(img, corners, (11,11), (-1,-1), (cv.TERM_CRITERIA_EPS + cv.TERM_CRITERIA_MAX_ITER), criteria)

大家好,欢迎来到StackOverflow!我们能看到整个回溯吗?另外,请阅读如何更好地框定您的问题。@judith我在使用cv2的
solvePnp()
时也遇到了这个错误。通过将输入转换为float64See,相机校准的示例文件,我能够解决这个问题。