GitリポジトリのGPUImageを使用して、画像にいくつかのフィルターを適用しています。エッジ検出フィルター(特にCannyEdgeDetectionFilterを使用しています)が黒い背景に白いエッジをペイントしていることに気付きました。誰もが白い背景にその黒いエッジを作成する方法を知っています-またはそれを行う別のフィルター(そしてそれがそのライブラリから必要な唯一のフィルターなので、重くはありません)。
トニーに感謝します。
GitリポジトリのGPUImageを使用して、画像にいくつかのフィルターを適用しています。エッジ検出フィルター(特にCannyEdgeDetectionFilterを使用しています)が黒い背景に白いエッジをペイントしていることに気付きました。誰もが白い背景にその黒いエッジを作成する方法を知っています-またはそれを行う別のフィルター(そしてそれがそのライブラリから必要な唯一のフィルターなので、重くはありません)。
トニーに感謝します。
GPUImageColorInvertFilterはGPUImageで利用可能であり、必要なことを実行する必要があります。
ギャレットが示唆しているように、そのフィルターの色を単純に反転させて、目的の結果を得ることができます。ただし、これによりチェーンに別のフィルターが導入され、処理速度が低下する可能性があります。
GPUImageSketchFilterを使用して、Sobelエッジ検出フィルターの逆を取得できます。2つのフィルターの唯一の違いは、フラグメントシェーダーの最後から2番目の行です。ここで、返される色は、エッジ強度だけでなく、1.0からエッジ強度を引いたものです。
ここでは、Cannyエッジ検出についても同じことができますが、GPUImageWeakPixelInclusionFilterを、シェーダーの最後の行に次のようなものに置き換える必要があるだけです。
gl_FragColor = vec4(vec3(1.0 - sumTest * pixelTest), 1.0);
このフィルターの残りのすべてのコードと、Cannyエッジ検出フィルターのすべてのコードをコピーして貼り付け、GPUImageWeakPixelInclusionFilterの代わりにカスタムフィルタークラスを使用するようにCannyフィルターを変更して、カスタムCannyエッジを指定できます。自分の名前を検出します。
キャニーエッジ検出フィルターの使用に関する1つの警告:4ステップのキャニープロセス全体を実行するため、ソーベルエッジ検出フィルターがより多くのメモリを使用するよりもはるかに低速です。しきい値処理されたエッジ検出フィルターの1つを使用すると、はるかに低いコストでCannyの結果の妥当な近似値を取得できます。