0

バイナリ イメージの楕円の場合、このコードを適用しました

for(int j=0;j<poi.cols;j++)
{
    for(int i=0;i<poi.rows;i++)
    {
        if(poi.at<uchar>(j,i)==255 && n==0)
        { 
            lx=j;
            ly=i;
            n=1;
        }
    }
}

n=0;
for(int j=poi.cols;j>0;j--)
{
    for(int i=0;i<poi.rows;i++)
    {
        if(poi.at<uchar>(j,i)==255 && n==0)
        { 
            rx=j;
            ry=i;
            n=1;
        }
    }
}

n=lx;
int y;
cout << lx << "\t" << ly << "\t" << rx << "\t" << ry;
int d=(rx-lx)/5;
for(int i=0;i<5;i++)
{
    n=n+d;
    y=0;
    for(int j=0;j<poi.rows;j++)
    {
        if(poi.at<uchar>(n,j)>=250 && y==0)
        {
            cout << "\n" << n << "\t" << j;
            y=1;
        }
    }
}

エッジに沿って 10 個の中間点 (上に 5 個、下に 5 個) を見つけます。しかし、私は正しい答えを得ていません。時々、白いピクセルを検出することすらできません

バイナリ楕円の例を次に示します

ここに画像の説明を入力

4

0 に答える 0