提取EMGU中连接组件的质心

时间:2017-08-10 11:02:44

标签: emgucv

我在EMGU中有以下代码来提取连接的组件: Mat connected_array = new Mat();

            Mat stats = new Mat();
            Mat centroids = new Mat();
            Mat ImgMat = new Mat();
          CvInvoke.ConnectedComponentsWithStats(ImgThresh, connected_array, stats, centroids, LineType.EightConnected,DepthType.Cv32S);

我找不到任何方法来访问质心。

1 个答案:

答案 0 :(得分:1)

EMGU将大多数数组包装到Mat对象中,然后您需要将其转换为数组以访问其内容(使用mat.CopyTo(array))。这不是文档中的直截了当 - 我不得不使用trail& amp;找出它是如何工作的错误:

<script>

$( "#scroll" ).scroll(function() {

    var content = $(this).scrollTop() + $(this).innerHeight();

    if (content == $(this)[0].scrollHeight) {

        // $( "span" ).css( "display", "inline" ).fadeOut( "slow" );
        console.log("reach end");

    }
});



</script>


        <style>
        #scroll{

  max-height: 100px;
  overflow-y: auto;
  width: 647px;
  margin: auto;
        }
    </style>


<div id='scroll'>
<p>hello world</p>
<p>hello world</p>
<p>hello world</p>
<p>hello world</p>
<p>hello world</p>
<p>hello world</p>
<p>hello world</p>
<p>hello world</p>
<p>hello world</p>
<p>hello world</p>
<p>hello world</p>

</div>

另一种常用方法是使用轮廓,EMGU也提供类似的功能。我用它来获得更好的性能。我也包括一个例子:

Mat labels = new Mat();
Mat stats = new Mat();
Mat centroids = new Mat();
MCvPoint2D64f[] centroidPoints;
double x, y;
int n;

n = CvInvoke.ConnectedComponentsWithStats(image, labels, stats, centroids, LineType.EightConnected, DepthType.Cv32S);

centroidPoints = new MCvPoint2D64f[n];
centroids.CopyTo(centroidPoints);

foreach (MCvPoint2D64f point in centroidPoints)
{
    x = point.X;
    y = point.Y;
}