android - 如何获得轮廓的质心?安卓opencv

标签 android opencv centroid

这是c++代码。

vector<Moments> mu(contours.size() );
  for( int i = 0; i < contours.size(); i++ ){
      mu[i] = moments( contours[i], false );
  }

//Mass center
vector<Point2f> mc( contours.size() );
  for( int i = 0; i < contours.size(); i++ ){ 
    mc[i] = Point2f( mu[i].m10/mu[i].m00 , mu[i].m01/mu[i].m00 ); 
  }

到目前为止,这是我在 android 中的代码。我无法将质量中心转换为 android。

//moments
List<Moments> mu = new ArrayList<Moments>(contours.size());
  for (int i = 0; i < contours.size(); i++) {
    mu.add(i, Imgproc.moments(contours.get(i), false));
  }

//mass center
List<MatOfPoint2f> mc = new ArrayList<MatOfPoint2f>(contours.size()); 
  for( int i = 0; i < contours.size(); i++ ){
    mc.add((mu.get(i).get_m10() / mu.get(i).get_m00() ,   mu.get(i).get_m01()/mu.get(i).get_m00()));
  }

此行错误:

mc.add((mu.get(i).get_m10() / mu.get(i).get_m00() , mu.get(i).get_m01()/mu.get(i).get_m00()));

提前致谢。

最佳答案

此代码将找到所有轮廓的位置。

List<Moments> mu = new ArrayList<Moments>(Contours.size());
    for (int i = 0; i < Contours.size(); i++) {
        mu.add(i, Imgproc.moments(Contours.get(i), false));
        Moments p = mu.get(i);
        int x = (int) (p.get_m10() / p.get_m00());
        int y = (int) (p.get_m01() / p.get_m00());
        Core.circle(rgbaImage, new Point(x, y), 4, new Scalar(255,49,0,255));
    }

关于android - 如何获得轮廓的质心?安卓opencv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18345969/

相关文章:

java - 数据无法从网络服务器加载到 SQLite 数据库中

android - android的蓝牙通知代码

android - 我如何分析内存和 cpu 虎钳的设备,以确定重型图像处理的图像分辨率?

c++ - 如何使此 jpeg 压缩更快

Python DataFrame - groupby 和质心计算

java - 每次我想运行或不运行时都创建线程的新实例

android - 如何在布局中多次添加图像?

c++ - OpenCV 试图将两个不同的图像合二为一

c++ - OpenCV : How to find the center of mass/centroid for motion information

algorithm - 在像素簇中查找质心