gpt4 book ai didi

java - Opencv中的嘴巴检测在android中检测多个区域

转载 作者:太空宇宙 更新时间:2023-11-03 22:40:59 25 4
gpt4 key购买 nike

我是安卓新手。我正在使用 opencv 检测人脸和嘴巴。它没有正确检测到嘴巴。你能帮我吗?这是我的代码:

mJavaDetectorLip = 
loadClassifier(R.raw.haarcascade_mcs_mouth,"haarcascade_mcs_mouth.xml",
cascadeDir);
......
Rect liparea = new Rect(new Point(20,20),new Point(mGray.width() - 20,
mGray.height() - 20 ));
lipArea(mJavaLip,liparea,100);
......

这是我的代码:

   private Mat lipArea(CascadeClassifier clasificator, Rect area, int 
size) {
Mat template = new Mat();
Mat mROI = mGray.submat(area);
MatOfRect mouths = new MatOfRect();
Point lips = new Point();

//isolate the eyes first
clasificator.detectMultiScale(mROI, mouths, 1.1, 2, Objdetect.CASCADE_FIND_BIGGEST_OBJECT
| Objdetect.CASCADE_SCALE_IMAGE, new Size(30, 30), new Size());

Rect[] mouthArray = mouths.toArray();
for (int i = 0; i < mouthArray.length;) {
Rect e = mouthArray[i];
e.x = area.x + e.x;
e.y = area.y + e.y;
Point center1 = new Point(e.x + mouthArray[i].width * 0.5,
e.y + mouthArray[i].height * 0.5);
int radius = (int) Math.round(mouthArray[i].width / 2);
Imgproc.circle(mRgba, center1, radius, new Scalar(255, 0, 0), 4, 8, 0);

new Scalar(0,255,0),1,8,0);

return template;
}

return template;
}

它不是停留在一个地方,而是在全脸移动。

最佳答案

It is not staying in one place, it is moving around the whole face.

这是一种预期行为,因为嘴巴的特征非常有限,而且很可能出现误报。例如,您的眼睛也将具有与嘴唇相似的特征。为了缓解这个问题,OpenCV docs建议我们必须首先检测给定帧中的人脸,如果有多个人脸,则根据人脸矩形区域或其他一些参数选择一个人脸。人脸检测成功后,将人脸分成两半,只在下半部分搜索嘴唇。

这会显着提高您的准确性,因为人脸的 Haar 特征非常复杂且训练有素。将搜索范围从整个画面缩小到脸的下半部分也会节省时间。

关于java - Opencv中的嘴巴检测在android中检测多个区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53932440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com