I have the 3x3
intrinsics
and 4x3
extrinsics
matrices for my camera obtained via cv2.calibrateCamera()
Now I want to use these paramenters to compute the BEV (Bird Eye View)
transformation for any given coordinates in a frame obtained from the camera.
Which openCv
function can be used to compute the BEV
perspective transformation for given point coordinates and the camera extrinsics
and/or intrinsics
3x3 matrices
?
I found something very related in the following post: https://deepnote.com/article/social-distancing-detector/
based on https://www.pyimagesearch.com/2014/08/25/4-point-opencv-getperspective-transform-example/
,
they are using cv2.getPerspectiveTransform()
to get a 3X3 matrix
, but I don't know whether this matrix represents the intrinsics
, the extrinsecs
or something else. Then they are transforming the list of points using such matrix in the following way:
#Assuming list_downoids is the list of points to be transformed and matrix is the one obtained above
list_points_to_detect = np.float32(list_downoids).reshape(-1, 1, 2)
transformed_points = cv2.perspectiveTransform(list_points_to_detect, matrix)
I really need to know if I can use this cv2.perspectiveTransform
function to compute the transformation or if there's another better way to do this using the extrinsics
, the intrinsics
or both, without having to reuse the frame, since I already have the coordinates of people detected in the frame saved into an array.
Somebody just told me I can reach this if I have at least 3 3D points by using the cv2.findHomography
function. I'm trying this approach now. Does anyone else have another input?