バイナリ イメージの楕円の場合、このコードを適用しました
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 個) を見つけます。しかし、私は正しい答えを得ていません。時々、白いピクセルを検出することすらできません
バイナリ楕円の例を次に示します