Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

OpenCV: Find original coordinates of a rotated point

I have the following problem. I'm searching for eyes within an image using HaarClassifiers. Due to the rotation of the head I'm trying to find eyes within different angles. For that, I rotate the image by different angles. For rotating the frame, I use the code (written in C++):

Point2i rotCenter;
rotCenter.x = scaledFrame.cols / 2;
rotCenter.y = scaledFrame.rows / 2;

Mat rotationMatrix = getRotationMatrix2D(rotCenter, angle, 1);

warpAffine(scaledFrame, scaledFrame, rotationMatrix, Size(scaledFrame.cols, scaledFrame.rows));

This works fine and I am able to extract two ROI Rectangles for the eyes. So, I have the top/left coordinates of each ROI as well as their width and height. However, these coordinates are the coordinates in the rotated image. I don't know how I can backproject this rectangle onto the original frame.

Assuming I have the obtaind eye pair rois for the unscaled frame (full_image), but still roated.

eye0_roi and eye1_roi

How can I rotate them back, such that they map their correct position?

Best regards, Andre

click to hide/show revision 2
retagged

updated 2014-07-14 06:23:29 -0600

berak gravatar image

OpenCV: Find original coordinates of a rotated point

I have the following problem. I'm searching for eyes within an image using HaarClassifiers. Due to the rotation of the head I'm trying to find eyes within different angles. For that, I rotate the image by different angles. For rotating the frame, I use the code (written in C++):

Point2i rotCenter;
rotCenter.x = scaledFrame.cols / 2;
rotCenter.y = scaledFrame.rows / 2;

Mat rotationMatrix = getRotationMatrix2D(rotCenter, angle, 1);

warpAffine(scaledFrame, scaledFrame, rotationMatrix, Size(scaledFrame.cols, scaledFrame.rows));

This works fine and I am able to extract two ROI Rectangles for the eyes. So, I have the top/left coordinates of each ROI as well as their width and height. However, these coordinates are the coordinates in the rotated image. I don't know how I can backproject this rectangle onto the original frame.

Assuming I have the obtaind eye pair rois for the unscaled frame (full_image), but still roated.

eye0_roi and eye1_roi

How can I rotate them back, such that they map their correct position?

Best regards, Andre