如何将Android的Rect对象转换为OpenCV的Rect对象
Android Rect 与 OpenCV Rect 正确转换方案
核心坐标定义差异
- Android
android.graphics.Rect:通过左边界x(left)、上边界y(top)、右边界x(right)、下边界y(bottom)四个值确定矩形范围。 - OpenCV
org.opencv.core.Rect:通过左上角x坐标(x)、左上角y坐标(y)、矩形宽度(width)、矩形高度(height)四个值确定矩形范围。
两者共享同一坐标体系:以图像左上角为原点(0,0),y轴向下递增,转换时无需调整坐标方向。
转换代码实现
1. Android Rect → OpenCV Rect
直接复用Android Rect的width()和height()方法(内部已实现right-left、bottom-top计算):
android.graphics.Rect androidRect = new android.graphics.Rect(10, 20, 100, 150); org.opencv.core.Rect opencvRect = new org.opencv.core.Rect( androidRect.left, androidRect.top, androidRect.width(), androidRect.height() );
2. OpenCV Rect → Android Rect
通过OpenCV Rect的x+width得到右边界,y+height得到下边界:
org.opencv.core.Rect opencvRect = new org.opencv.core.Rect(10, 20, 90, 130); android.graphics.Rect androidRect = new android.graphics.Rect( opencvRect.x, opencvRect.y, opencvRect.x + opencvRect.width, opencvRect.y + opencvRect.height );
注意事项
- 避免手动计算宽高:Android Rect的
width()和height()已经封装了边界差值计算,直接调用能减少人为错误。 - 确认坐标体系一致性:如果应用中存在自定义坐标翻转(比如将y轴设为向上),则需要额外调整y值,但默认图像场景下无需处理。
内容的提问来源于stack exchange,提问作者Víctor Martín
相关产品推荐
相关产品推荐

