How to keep the camera principal point fixed during calibration process

I am trying to calibrate a camera with 25mm lense and 1/1.8inch sensor. The image is 1080p. During calibration, I want to keep the value of cx, cy as 960, 540 fixed. If I use the flag [cv::CALIB_FIX_PRINCIPAL_POINT], it returns intrinsics with fx, fy set to very low values (2,5) even though I had initialized the cx, cy values to be 960, 540 before running calibratecamera API.

My question is how to keep the cx, cy values fixed to 960,540 during calibration.

your calibration data is junk. that’s all.

Post your calibration pictures.
What is the reprojection error?

You want to fix cx,cy, but then you say that fx,fy are low values (2,5) - did you mean cx,cy are (2,5)? If you pass in cv::CALIB_FIX_PRINCIPAL_POINT it should be fixed as the center of the image, unless you provided an intrisic guess and also passed in cv::CALIB_USE_INTRINSIC_GUESS, then they should stay fixed at whatever you passed in. Your fx,fy (if that’s what you really meant) won’t be constrained in this case, though, and the quality of your data (including whatever the fixed cx,cy are) will affect the rest of your calibration.

Indeed I had used both flags simultaneously.