2016-06-16 5 views
0

ウェブカメラで検出されたすべての人物の顔をぼかそうとしています。 問題は、ウェブカメラが顔を検出すると、プログラムがぼかし顔のクロップマットを表示することです。Java OpenCV - ROIを検出してサブマットを作成し、元のマットにコピー

ぼかし顔を元のマットに入れようとしましたが、うまくいきません。

for(Rect rect : faces.toArray()){ 
    Imgproc.rectangle(frame, rect.tl(), rect.br(), new Scalar(0,0,255),3); 
    Rect rectCrop = new Rect(rect.x, rect.y , rect.width, rect.height); 
    Mat imageROI = grayFrame.submat(rectCrop); 

    //frame is the original mat with the correct size 
    Imgproc.GaussianBlur(imageROI, frame, new Size(55, 55), 55); 
} 

顔検出:顔検出で

No face detection

With face detection

答えて

0

マット

Mat imageROI = new Mat(grayFrame,rectCrop); 
のこのコンストラクタを使用します3210

代わりの

Mat imageROI = grayFrame.submat(rectCrop); 

コンストラクタは、あなたがgrayFrameが所有しているデータ行列に参照できます。サブマットを変更するとbigmatに反映されます。submatは、クロップ矩形のgrayFrameデータマトリックスのコピーを提供します。したがって、サブマットの修正はビッグマットには影響しません。

関連する問題