私は最近、顔検出アルゴリズムに取り組んでおり、検出アルゴリズムの実行中にキャンバスにいくつかのフィルターを追加したいと考えています。図 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();
}