android opencv rect 横框旋转成竖框
时间: 2023-09-11 12:05:04 浏览: 60
你可以通过以下步骤将横框旋转成竖框:
1. 获取矩形的中心点坐标和宽高信息。
2. 计算出矩形对应的旋转矩阵。
3. 将旋转矩阵应用于原始图像,得到旋转后的图像。
4. 根据旋转后的图像,重新计算矩形的坐标信息。
下面是一个示例代码,可以将输入图片中的矩形框旋转90度:
```Java
// 加载图像
Mat img = Imgcodecs.imread(imagePath);
// 定义矩形框
Rect rect = new Rect(100, 100, 200, 100);
// 计算矩形中心点坐标
Point center = new Point(rect.x + rect.width / 2, rect.y + rect.height / 2);
// 计算旋转矩阵
Mat rotmat = Imgproc.getRotationMatrix2D(center, 90, 1.0);
// 应用旋转矩阵
Mat rotated = new Mat();
Imgproc.warpAffine(img, rotated, rotmat, img.size(), Imgproc.INTER_LINEAR);
// 计算旋转后的矩形坐标
Rect rotatedRect = new Rect((int)(center.x - rect.height / 2), (int)(center.y - rect.width / 2), rect.height, rect.width);
// 在旋转后的图像上绘制矩形框
Imgproc.rectangle(rotated, rotatedRect.tl(), rotatedRect.br(), new Scalar(0, 255, 0), 2);
// 显示图像
HighGui.imshow("Rotated Image", rotated);
HighGui.waitKey();
```
在上述代码中,我们使用了 OpenCV 库的 `Imgproc.getRotationMatrix2D` 和 `Imgproc.warpAffine` 函数来实现图像的旋转。其中,`getRotationMatrix2D` 函数可以根据给定的旋转角度和中心点坐标计算出旋转矩阵,而 `warpAffine` 函数则可以将旋转矩阵应用于原始图像,得到旋转后的图像。最后,我们根据旋转后的图像,重新计算了矩形的坐标信息,并在旋转后的图像上绘制了矩形框。