読者です 読者をやめる 読者になる 読者になる

getalog

console.log geta6

写真から顔を検出して部分的にglitchをかける

opencvで顔を検出して切り抜き、Glitchフィルタをかけた後にimagemagickで合成して出力する。

元の写真

Google Image Searchでfaceで検索した様子。

検出状態

ellipseしてみた。

処理後

概ね望んだ通りの結果が得られた。

清く正しく美しく画像を破壊するのは難しい。

現在はbase64に変換して1Bに書き換えてbinaryに書き戻しているので、ほぼ全ての領域で正しく破壊できているが、何回やっても結果は変わらない。

当初はbyteArrayにしてランダム箇所にランダム値を~255で突っ込む、という適当実装だった。成功すればとても美しく破壊できるのだが、失敗すると画像フォーマットそのものを破壊してimagemagickから無視されるので、やめた。顔が検出されてないみたいでかっこ悪いし。

ちなみに、byteArrayへの変換方法はこちらを参考にした。

Buffer.prototype.toByteArray = ->
  Array.prototype.slice.call @, 0