4

画像内のいくつかのパターンをどのように認識するかという問題に悩まされています。

画像は紙のイメージで、絵柄は真っ白で四隅の模様は黒です。画像の黒い模様を認識したいのですが?

私はネットでよくサーフィンをし、答えとしてopencvを見つけました。しかし、必要な機能を実現するために opencv を使用する方法を説明するものは何も提供されていません。

コーディングの観点から私を助けてください。または、従うべきリンク、またはこの機能を実現するために使用する必要があるオープンソース ライブラリの名前を提供してください。パターンの画像は次のとおりです。 ここに画像の説明を入力

画像は真っ白な背景と隅にある 4 つの黒いパターンで構成されています。これらの黒いパターンを 4 つの隅すべてで認識し、画像を処理する必要があります。

どんな提案でも大歓迎です。

前もって感謝します!

4

2 に答える 2

3

私はあなたの問題を本当に理解していません-あなたが言うなら:

画像は真っ白な紙の画像で、四隅の模様は黒です。

では、これら4つの輪郭だけを画像からマスクする場合の問題は何でしょうか。長さ40ピクセルの4つの正方形でマスクを行った後、私はこれを手に入れました:

ここに画像の説明を入力してください

小さな領域を削除するには、モルフォロジー操作を使用できます。私はこれを得た:

ここに画像の説明を入力してください

そして、入力画像にそれらを描画するだけです(オプション)。結果は次のとおりです。

ここに画像の説明を入力してください

このアルゴリズムを実装するには、OpenCVライブラリを使用します。私はそれがIOSで動作することを100%確信しています-OpenCVチームはついにIOSバージョンを公開しました。だからあなたが言うなら:

OpenCV-iOSリンクを実行しようとしましたが、プロジェクトが実行されず、エラーが表示されます。

私たちはあなたの問題を見るテレパシストではないので、それであなたを助けることはできません。ほんの小さな提案-あなたの問題をグーグルしてみてください。私はそれが役立つはずだと99%確信しています。

そして私が忘れないように-ここにc++コードがあります:

Mat src = imread("input.png"), tmp;

//convert image to 1bit
cvtColor(src, tmp, CV_BGR2GRAY);
threshold(tmp, tmp, 200, 255, THRESH_OTSU);

//do masking
#define DELTA 40
for (size_t i=0; i<tmp.rows; i++)
{
    for (size_t j=0; j<tmp.cols; j++)
    {
        if(!((i < DELTA && j < DELTA)
         || (i < DELTA && j > tmp.cols - DELTA)
         || (i > tmp.rows - DELTA && j < DELTA)
         || (i > tmp.rows - DELTA && j > tmp.cols - DELTA)))
        {
            //set color to black
            tmp.at<uchar>(i, j) = 255;
        }
    }
}

bitwise_not(tmp,tmp);

//erosion and dilatation:
Mat element = getStructuringElement(MORPH_RECT, Size(2, 2), Point(1, 1));

erode(tmp, tmp, element);
dilate(tmp, tmp, element);

//(Optional) find contours and draw them:
vector<Vec4i> hierarchy;
vector<vector<Point2i> > contours;

findContours(tmp, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE);

for (size_t i=0; i<contours.size(); i++)
{
    drawContours(src, contours, i, Scalar(0, 0, 255), 1);
}
于 2012-08-14T19:30:22.130 に答える
1

たぶん、この質問はあなたにとって役立つでしょう、特にテニスボール認識チュートリアルへのリンクはあなたが探しているものとほとんど同じようです。

iOSでOpenCVを使用する方法については、OpenCV-iOSおよびiOSでのコンピュータービジョンをご覧ください。

于 2012-08-11T11:11:41.990 に答える