我有一个图像,我在图像上放置一个矩形.然后我旋转图像.如何在旋转的图像上获得矩形的中心?
或者我可以以某种方式旋转矩形以放置旋转图像?我认为在这种情况下,旋转必须沿着与用于旋转图像的点相同的点进行.
这是放置在其上的矩形的图像.

这是旋转的图像.

这是我用来旋转图像的代码:
cv::Mat frame, frameRotated;
frame = cv::imread("lena.png");
cv::Rect rect(225,250,150,150);
cv::rectangle(frame, rect, cv::Scalar(0,0,255),2);
int theta = 30;
double radians = theta * PI / 180.0;
double sin = abs(std::sin(radians));
double cos = abs(std::cos(radians));
int newWidth = (int) (frame.cols * cos + frame.rows * sin);
int newHeight = (int) (frame.cols * sin + frame.rows * cos);
cv::Mat targetMat(cv::Size(newWidth, newHeight), frame.type());
int offsetX = (newWidth - frame.cols) / 2;
int offsetY = (newHeight - frame.rows) / 2;
frame.copyTo(targetMat.rowRange(offsetY, offsetY …Run Code Online (Sandbox Code Playgroud) 我有一个数学问题:让我假设我使用带有以下命令的opencv将图像围绕其中心旋转30°:
M = cv2.getRotationMatrix2D((cols/2,rows/2),30,1)
img_rotate = cv2.warpAffine(img,M,(cols,rows))
Run Code Online (Sandbox Code Playgroud)
如果取一个img_rotate的像素(40,40),我怎么知道哪个是原始图像中的相应像素?
编辑:换句话说,当我将旋转应用于图像时,我获得了变换后的图像.是否有可能获得点之间的映射?例如,新图像的(x,y)点对应于原始图像的(x',y')点.