(camera calibration) Type Error: Expected Ptr<cv::UMat> for argument '%s'

Viewed 492

The error Expected Ptr<cv:::UMat>for argument'%s' occurred during camera calibration. What is the cause of this error, and how to fix it?

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)

enter image description here

1 Answers

You are passing images, probably a string or folder location where the images are stored. But your parameter is img and you also loop through images. Opencv is expecting an Opencv image read from your folder "images".

So I would change it to:

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)
Related