タイトルの通り、映像の輝度に反応するウェーブフォームを作ろうと思っています。
下記の構文で輝度に反応させることはできたのですが、
audioInputExampleのように時間軸で波を表示することができません。
ofApp::update for (int i = 0; i < camWidth; i++) { for (int j = 0; j < camHeight; j++) { float r = (float)pixels[(j * camWidth + i) * 3]; float g = (float)pixels[(j * camWidth + i) * 3 + 1]; float b = (float)pixels[(j * camWidth + i) * 3 + 2]; float brightness = (r + g + b) / 3; brightness = ofMap(brightness, 0.0, 255.0, 0.0, 1.0, true); videoHistory.push_back(brightness); if (videoHistory.size() >= 512) { videoHistory.erase(videoHistory.begin(), videoHistory.begin() + 1); } } } ofApp::draw() ofBeginShape(); for (unsigned int i = 0; i < videoHistory.size(); i++) { if (i == 0) ofVertex(i, 200); ofVertex(i, 200 - videoHistory[i] * 180.0f); if (i == videoHistory.size() - 1) ofVertex(i, 200); } ofEndShape(false);
おそらくaudioInputExampleの
ofApp::audioIn(ofSoundBuffer & input)で
smoothedVolの音声のbufferを定義?しているのと同じことを、
映像の輝度でもする必要があると思うのですが、輝度のbufferの取り方がわかりません。
ofApp::audioIn(ofSoundBuffer & input)と同じように、
for文のinputの部分を輝度に置き換えればよいのかなと思っているのですが、
どなたか良い方法を教えていただけませんでしょうか?
openframworks of_v0.11.0_vs2017_release
windows10
Visual Studio 2019
回答1件
あなたの回答
tips
プレビュー