1

似ている画像が 2 つありますが、1 つは追加の変更があります。私ができる必要があるのは、2 つの画像間の変化を見つけることです。両方の画像の背景は白で、変化は線が描かれていることです。openCV ほど複雑なものは必要ありません。C または C++ で「シンプルな」ソリューションを探しています。

4

3 に答える 3

0

あなたの説明には、いくつかの未回答の質問が残っています。前後の画像の例を見るとよいでしょう。

ただし、一見すると、追加されたラインのパラメーターを見つけたいだけだと仮定すると、フレームをグレースケールに変換し、それらを互いに減算し、結果を白黒にセグメント化してからラインを実行するだけで十分な場合がありますセグメント検出。

結果の画像に含まれる直線セグメントが 1 つだけの場合は、残りのピクセルの周囲の境界ボックスを見つけるだけで十分な場合があります。2 つの可能性のある線セグメントのどちらを持っているかを簡単に確認できます。

ただし、OpenCV が提供する Hough Transform メソッドのいずれかを使用する方がおそらく簡単です。

于 2013-07-10T14:53:58.853 に答える
0

memcmp() (strcmp() と同様に、2 つのメモリ ブロックを比較する Ansi C 関数) を使用できます。ピクセルの配列でアクティブにするだけで、それらが同一かどうかを返します。最初の変更が発生したメモリ ブロックへのポインターの結果として得られる小さな調整を追加できます。これにより、最初のピクセルへのポインタが得られます。隣接するピクセルに沿って、白以外のすべてのピクセル (ラインを表す) を見つけることができます。

bool AreImagesDifferent(const char*Im1, const char* Im2, const int size){
    return memcmp(Im1,Im2,size);
}

const char* getFirstDifferentPixel(const char*Im1, const char* Im2, const int size){
    const char* Im1end = Im1+size;
    for (;Im1<Im1end; Im1++, Im2++){
        if ((*Im1)!=(*Im2))
            return Im1;
    }
}
于 2013-07-11T07:00:13.390 に答える