[M1 Mac, Big Sur 11.6.8, clang 13.0.0, FLTK 1.3.8, NO IDE]
動画の一部(四角形領域)をぼかす機能を実装しました。
今のところ1ヶ所のみですが、複数の領域にモザイクをかけられるようにします。
// 計算ボタンのコールバック関数 変数x,yはmathライブラリで使われているためxx,yyを使用
void calcCB(Fl_Widget*, void*) {
xa = (int)(xx1 * ((float)widthSub1/480));
xb = (int)(xx2 * ((float)widthSub1/480));
ya = (int)(yy1 * ((float)heightSub1/360));
yb = (int)(yy2 * ((float)heightSub1/360));
cout << "widthSub1 " << widthSub1 << " heightSub1 " << heightSub1 << endl;
cout << "xx1 " << xx1 << " xx2 " << xx2 << " yy1 " << yy1 << " yy2 " << yy2 << endl;
cout << "xa " << xa << " xb " << xb << " ya " << ya << " yb " << yb << endl;
wa = xb - xa;
ha = yb - ya;
filter = to_string(wa) + ":" + to_string(ha) + ":" + to_string(xa) + ":" + to_string(ya);
filter2 = to_string(xa) + ":" + to_string(ya);
fil_input -> value(filter.c_str());
}
// フィルタボタンのコールバック関数
void filCB(Fl_Widget*, void*){
const char* output = outputLine2 -> value();
const char* output2 = out2_input -> value();
string filtercmd = "ffmpeg -i " + string(output) + " -filter_complex \"[0:v]crop=" + filter + ",boxblur=4[fg];[0:v][fg]overlay=" + filter2 + "[v]\" -map \"[v]\" " + string(output2) + " 2> " + filterFile;
// CMD追加
cmdBuffer2 -> append(filtercmd.c_str());
cmdBuffer2 -> append("\n");
cout << "filtercmd: "<< filtercmd << endl;
// cmdTextDisplay2にcmdを表示する
cmdTextDisplay2->buffer(cmdBuffer2);
// コマンド実行
system(filtercmd.c_str());
// browserにfilterFileの内容を表示する
browser2 -> load(filterFile.c_str());
int line_num = browser2->size();
browser2 -> bottomline(line_num);
}