-2

C++ のプロジェクトに取り組んでいますが、オブジェクトの重心 (座標 x と y) を見つけようとして問題が発生しています...

250x250 ピクセルの画像があります。この画像は白で、オブジェクトは黒です。この黒いオブジェクトの重心を見つける必要があります (この黒いオブジェクトは幾何学的図形です)。

これですべての黒いピクセルを数えます:

for(i=0; i<high; i++) 
{
    for(j=0; j<width; j++)  
    {
        if(Img->imx[i*width+j]==0)
        {
        c=c+1;
        }                                                   

    }

これを行うと、画像にすべての黒いピクセルが表示されます。しかし、オブジェクトの重心を見つける方法がわかりません。

4

1 に答える 1

1

オブジェクトの密度が均一である場合、重心は黒ピクセルのすべての座標の平均を計算することによって計算できます。

int c = 0;
double x = 0, y = 0;
for(i=0; i<high; i++)
{
    for(j=0; j<width; j++)
    {
        if(Img->imx[i*width+j]==0)
        {
             c=c+1;
             x=x+j;
             y=y+i;
        }
    }
}
if(c>0)
{
    x=x/c;
    y=y/c;
}
于 2016-02-28T01:36:47.193 に答える