onCameraFrame,屏幕闪光的一部分

时间:2013-12-04 21:02:05

标签: java android opencv

我的代码有问题。我有面部检测和口直,我想用嘴缩放那部分。它的工作,但缩放屏幕一直闪烁。帮助

public Mat onCameraFrame(CvCameraViewFrame inputFrame){
    mRgba = inputFrame.rgba();
    mGray = inputFrame.gray();

    if (zoomWindow == null) zoomWindowCreate();

    if (mAbsoluteFaceSize == 0) 
    {
        int height = mGray.rows();
        if (Math.round(height * mRelativeFaceSize) > 0)mAbsoluteFaceSize = Math.round(height * mRelativeFaceSize);
    }

    MatOfRect faces = new MatOfRect();

    if (mJavaDetector != null) 
        mJavaDetector.detectMultiScale(mGray, faces, 1.1, 2, 2, new Size(mAbsoluteFaceSize*2, mAbsoluteFaceSize), new Size());

    Rect[] facesArray = faces.toArray();
    for (int i = 0; i < facesArray.length; i++) 
    {
        Core.rectangle(mRgba, facesArray[i].tl(), facesArray[i].br(),FACE_RECT_COLOR, 3);       
        Rect r = facesArray[i];
        mouth = new Rect(r .x + r.width / 4,(int) (r.y + (r.height / 1.7)),(r.width - 2 * r.width / 4) , (int) (r.height / 3.5));
        Core.rectangle(mRgba, mouth.tl(), mouth.br(), new Scalar(255, 0, 0, 255), 2);
        Imgproc.resize(mRgba.submat(mouth), zoomWindow,zoomWindow.size());
    }
    return mRgba;
}

public void zoomWindowCreate()
{
    if (mGray.empty())return; 
    int rows = mGray.rows();
    int cols = mGray.cols(); 
    zoomWindow = mRgba.submat(rows / 2 + rows / 4, rows, cols / 2   + cols / 5, cols);  }

EDIT。 该死的我,问题解决了。

if (zoomWindow == null) zoomWindowCreate();

应该像

zoomWindowCreate();

通过闪烁,我的意思是:Link

1 个答案:

答案 0 :(得分:0)

删除该部分解决了问题:

if (zoomWindow == null)

来自行:

if (zoomWindow == null) zoomWindowCreate();