Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 镜头框,屏幕闪光灯的一部分_Java_Android_Opencv - Fatal编程技术网

Java 镜头框,屏幕闪光灯的一部分

Java 镜头框,屏幕闪光灯的一部分,java,android,opencv,Java,Android,Opencv,我对代码有问题。我有人脸检测和嘴巴矫正,我想用嘴巴缩放这部分,。工作正常,但屏幕一直在闪烁。救命啊 public Mat onCameraFrame(CvCameraViewFrame inputFrame){ mRgba = inputFrame.rgba(); mGray = inputFrame.gray(); if (zoomWindow == null) zoomWindowCreate(); if (mAbsoluteFaceSize == 0)

我对代码有问题。我有人脸检测和嘴巴矫正,我想用嘴巴缩放这部分,。工作正常,但屏幕一直在闪烁。救命啊

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);  }
应该是

zoomWindowCreate();

通过闪烁,我的意思是这样的:

通过删除该部分解决问题:

if (zoomWindow == null)
从第行开始:

if (zoomWindow == null) zoomWindowCreate();

“闪现”意味着什么?如果你已经解决了问题,请自己回答(它可以让你得到更多的分数!),这样其他人可以更快地找到答案。
if (zoomWindow == null) zoomWindowCreate();