🐈
opencv4nodejsで画像ファイルから顔検出するメモ
はじめに
画像処理で有名なOpenCV
の npm ライブラリopencv4nodejs
を使って、画像ファイルの「顔検出」を行ってみます。
インストール
npm install --save opencv4nodejs
コード
トップレベルawaitを使うために、
package.json
に以下のプロパティを追加します。"type": "module"
import cv from 'opencv4nodejs';
const classifier = new cv.CascadeClassifier(cv.HAAR_FRONTALFACE_ALT2);
try {
const img = await cv.imreadAsync('./lenna.jpg');
const grayImg = await img.bgrToGrayAsync();
const result = await classifier.detectMultiScaleAsync(grayImg);
if (!result.objects.length) {
throw new Error('failed to detect faces');
}
const minDetections = 10;
result.objects.forEach((faceRect, i) => {
if (result.numDetections[i] < minDetections) {
return;
}
const rect = cv.drawDetection(
img,
faceRect,
{ color: new cv.Vec(255, 0, 0), segmentFraction: 4 }
);
cv.imwrite(`member${i}.jpg`, img.getRegion(faceRect));
});
cv.imshowWait('result', img);
} catch (e) {
console.error(e);
}
動作確認
node index.js
顔検出できました。
Discussion