現在、C ++を使用して8ビットビットマップを読み取り、そのピクセルデータとカラーテーブルを保存しています。現在、カラーテーブルを配列に格納しています。
RGBQUAD* colours;
すべての方向で最も近い一意のピクセルの色を見つけて、そのピクセルにビットマップをトリミングするにはどうすればよいのでしょうか。外部ライブラリなしでC++を使用しています。
現在、C ++を使用して8ビットビットマップを読み取り、そのピクセルデータとカラーテーブルを保存しています。現在、カラーテーブルを配列に格納しています。
RGBQUAD* colours;
すべての方向で最も近い一意のピクセルの色を見つけて、そのピクセルにビットマップをトリミングするにはどうすればよいのでしょうか。外部ライブラリなしでC++を使用しています。
その特定のホイールを再実装しようとするのではなく、ImageMagickなどのすぐに利用できるライブラリを使用することをお勧めします。
他の場所で既に十分に実装されているものを実装する理由は 2 つしかありません。1) 宿題、または 2) 既存のコードよりもはるかに優れた機能を実際に実行できると考えているためです。
1) 「宿題」のタグがないから、2) 聞かなくていいから…
「最も近いユニークなピクセルカラー」とは、色空間で最も近いことを意味しますか?絶対的に(R / G / B)または人間の意味で?それで、与えられた#0002FE
wouは#0000FF
あなたのカラーテーブルで見つけるかもしれませんか?
「標準」の単純なC++メソッドはstd::min_element()
、であり、範囲と述語を取ります。あなたの場合、その範囲はあなたのカラーテーブルであり、述語はあなたが望む色に近いことです。例えば[targetColor](RGBQUAD tableEntry) { return abs(RGBdiff(tableEntry, targetColor)); }