correct, as far as I can see. be careful about which dimension is which. when you give 9x14, it means 9 wide 14 “tall”, i.e. “portrait” shaped. all the functions label the corners accordingly (row-wise like reading text). your objp
are ordered the same, and the coordinates are x
in first position, y
in second position.
nah. regular ruler plus some guessing between marks is plenty good enough. I’m saying the printer could have caused a few percent of difference between directions, so the nominally square grid is really rather rectangularly spaced. and of course it might add some scaling too. you can easily improve your calibration by an order of magnitude by measuring. just measure across furthest corners and divide by number of steps. if you have 9 points across the short side, that’s 8 steps, and at 16 mm I’d expect 128 mm there. if you see 126 and a half mm, you get 126.5/8 = ~15.8 mm.
edit: this will give you distances (stereo baseline distance, etc) that are closer to reality but it doesn’t mean the reprojection error will go down. the reprojection error (also) depends on how the corners are localized. the APIs might use cornerSubPix
but that assumes a linear color space, and most data isn’t in a linear color space. also pretty much all consumer cameras sharpen the picture and that introduces error as well.