如何在Android中添加2个org.opencv.core.Point对象?

时间:2013-09-24 07:48:06

标签: java android c++ opencv point

我是OpenCV和Android的新手。我想将C ++代码转换为java

line( img_matches, scene_corners[0] + Point2f( img_object.cols, 0), scene_corners[1] + Point2f( img_object.cols, 0), Scalar(0, 255, 0), 4 );

这是它的最后一部分。在这里,我用Core.line()替换了行

现在问题是在上面的代码中添加了这两点

scene_corners[0] + Point2f( img_object.cols, 0)

我用

替换了{scene_corners[0],Point2f( img_object.cols, 0)
scene_corners.get(0),new Point(img_object.cols(),0)

由于两者都是org.opencv.core.Point类型对象,因此不支持这些类型的操作。任何方式来转换它。请帮我。先感谢您。

1 个答案:

答案 0 :(得分:3)

首先要注意的是Core.line的第二个和第三个参数必须是点。

在替换中,您删除了添加符号(+)。嗯。如果您要将代码行转换为行,我认为您无法做到这一点。

get方法似乎返回一个Point,但您需要打印出该对象以确保或只是查看scene_corners的变量定义。使用它来尝试将其打印出来:

System.out.println(scene_corners.get(0));

如果它是一个Point对象,那么您可以通过获取Point的每个组件并将其添加到添加到Point中的相应组件来将其添加到您的点。假设A和B点为0和1。

P(A)+ P(B)= P(A0 + B0,A1 + B1)

这里,我假设scene_corners.get(0)有x和y属性:

line(
    img_matches,
    new Point(
        img_object.cols() + scene_corners.get(0).x,
        0 + scene_corners.get(0).y),
    new Point(
        img_object.cols() + scene_corners.get(1).x,
        0 + scene_corners.get(1).y),
    Scalar(0, 255, 0),
    4
);