0

私は最近、顔検出アルゴリズムに取り組んでおり、検出アルゴリズムの実行中にキャンバスにいくつかのフィルターを追加したいと考えています。図 1 に示すように、サンプルまたはカスタム フィルター (Caman.js ライブラリ) で動作するモーダルを作成しました。

モーダル : フィルター

選択が行われたら、キャンバスにフィルターを追加するか、フィルターをキャンセルします。2 つのオプションがあります。

1) 確認ボタン:

/* PREPARE ARRAYS */
//SAMPLE FILTERS (vintage = true sunrise = true)
var array1 = [vintage, sunrise, .../* selected values*/ ]; 

//CUSTOM FILTERS (vintage = 0.4, sunrise = 0.8) 
var array2 = [0.4,0.8, .../* selected values*/ ]; 

2) キャンセルボタン:

/* RESETS ARRAYS */
array1.length = 0;
array2.length = 0;

今のところ、私は画像要素で作業しようとしましたが、これはうまく機能しますが、すべての要素を個別にチェックするだけです。より多くのフィルタを追加すると、より多くの if/else-if ステートメントを作成する必要があります。

if(array1.contains("vintage")){
   Caman('#myIcon', function(){
      this.vintage().render(); /*.vintage & anyFilter is in Caman.js API */
   });
}else if(array1.contains("sunrise")){
  //.....etc
}

私の質問:

すべてのフィルターはライブラリ内の関数であり、something.render() は明らかに機能しないため、特定のライブラリ (Caman.js) に文字列値を渡す方法はありますか?

例えば:

function apply_Filters (*MY_FILTER_DATA*) {
    Caman('#myIcon', function(){
        this.*MY_FILTER_DATA*.render();
} 
4

1 に答える 1