リモートワークしながらYouTube Musicを聴いていました。
たまたま聴いたのが以下の曲。ちょっと生っぽい音源で気になったので映像を観てみるとこれがまたカッコいい。
何回か観ているうちに、骨格抽出してCGモデルとか動かせたらカッコいいだろうな。。。と。
ただ、動画像から簡単に抽出するライブラリはまだないようだったので、とりあえずProcessingのOpenCVライブラリで何かしようかとサンプルをいじいじ。
いじいじした動画は、自分のPC上でQuickTimeを使って画面録画しました。音声はなしで。
とりあえず、できたのが以下でした。
ほとんどサンプルと同じですが、コードも置いておきます。
import gab.opencv.*; import java.awt.Rectangle; import processing.video.*; OpenCV opencv; Movie video; Rectangle[] faces; void setup() { size(1164, 324); video = new Movie(this, "twice.mov"); opencv = new OpenCV(this, 1164, 324); opencv.startBackgroundSubtraction(5, 3, 0.5); video.loop(); video.play(); colorMode(HSB); } void movieEvent(Movie m) { m.read(); } void draw() { background(0); image(video, 0, 0); opencv.loadImage(video); opencv.updateBackground(); opencv.dilate(); opencv.erode(); noStroke(); for (Contour contour : opencv.findContours()) { if (contour.area() > 1000) { Rectangle a = contour.getBoundingBox(); fill(random(255),255,255,80); // circle(a.x+a.width/2, a.y+a.height/2, 50); rect(a.x, a.y, a.width, a.height); } } }
かっこいいですね。