Python (摄像机校准)类型错误:预期Ptr<;cv::UMat>;对于参数';%s';
摄像机校准过程中出现参数“%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(
。此错误的原因是什么,如何修复
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,相机校准的示例文件,我能够解决这个问题。