写一个cpp算法函数,支持将矩形x,y,w,h的值变换为4个坐标点, 坐标点基于总图像宽高, 坐标点值在-0.5-0.5之间, 代码要简洁,性能要最优
时间: 2023-05-22 21:06:19 浏览: 141
矩阵变换.cpp
可以使用以下代码实现:
```
void transformRect(float x, float y, float w, float h, float imageWidth, float imageHeight, float* points) {
float halfWidth = imageWidth / 2.0f;
float halfHeight = imageHeight / 2.0f;
// 计算相对于总图像宽高的比例
float left = x / imageWidth - 0.5f;
float top = y / imageHeight - 0.5f;
float right = (x + w) / imageWidth - 0.5f;
float bottom = (y + h) / imageHeight - 0.5f;
// 转换为坐标点
points[0] = left * 2.0f * halfWidth; // 左上角
points[1] = top * 2.0f * halfHeight;
points[2] = right * 2.0f * halfWidth; // 右上角
points[3] = top * 2.0f * halfHeight;
points[4] = right * 2.0f * halfWidth; // 右下角
points[5] = bottom * 2.0f * halfHeight;
points[6] = left * 2.0f * halfWidth; // 左下角
points[7] = bottom * 2.0f * halfHeight;
}
```
代码中,我们首先将总图像的宽高除以2,然后根据矩形的x、y、w、h的值,计算矩形相对于总图像宽高的比例。最终将比例转换为坐标点,同时将坐标点值限制在-0.5到0.5之间。
可以通过调用该函数,将矩形的位置大小信息转换为4个坐标点。
阅读全文