gpt4 book ai didi

android - 协调从org.opencv.core.Point到android.graphics.Point的转换

转载 作者:行者123 更新时间:2023-12-02 16:21:47 26 4
gpt4 key购买 nike

可能这个问题可能是重复的。但是由于我是OpenCV和Canvas的新手,因此我很难找到答案,这是我的代码

List<Point> pts = new ArrayList<Point>();
Converters.Mat_to_vector_Point(MatOfPoint, pts);

我正确地获取列表,其中指向抽象org.opencv.core.Point。
现在,我使用正确的MatOfPoint将这些点转换为android.graphics.Point坐标。
android.graphics.Point pt1 = new android.graphics.Point((int) pts.get(0).x, (int) pts.get(0).y);

在获取此信息后,我尝试使用android.graphics.Point绘制Canvas,但坐标与图像坐标不匹配。检查下面给出的代码。
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setStrokeWidth(3);

paint.setAntiAlias(true);
paint.setDither(true);
paint.setColor(Color.parseColor("#55000000"));
paint.setStyle(Paint.Style.FILL);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeWidth(5);
canvas.drawPaint(paint);


canvas.drawLine(point1.x,point1.y, point2.x, point2.y, paint);
}

从openCV坐标检测到的正方形绘制的 Canvas 与 Canvas 的Point坐标不匹配。我是否可以用像素或图像密度来操纵点?任何帮助将不胜感激。
谢谢

最佳答案

您需要通过添加偏移量来缩放点和移位点的位置

参见CameraBridgeViewBase.java中的第412行

参见JavaCameraView.java中的171行

scale=Math.min(mOpenCvCameraView.getWidth()/Matwidth,mOpenCvCameraView.getHeight())/Matheight)

xoffset=(mOpenCvCameraView.getWidth()-scale*Matwidth)/2
yoffset=(mOpenCvCameraView.getHeight()-scale*Matheight)/2
final point1's X coordinate is: point1.x*scale+xoffset
final point1's Y coordinate is: point1.y*scale+yoffset

final point2's X coordinate is: point2.x*scale+xoffset
final point2's Y coordinate is: point2.y*scale+yoffset

关于android - 协调从org.opencv.core.Point到android.graphics.Point的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27730557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com