我的代码有问题。我有面部检测和口直,我想用嘴缩放那部分。它的工作,但缩放屏幕一直闪烁。帮助
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
答案 0 :(得分:0)
删除该部分解决了问题:
if (zoomWindow == null)
来自行:
if (zoomWindow == null) zoomWindowCreate();