脸上没有显示红色矩形框
Not showing a red rectangle box on Face
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.RGB_565;
bitmap = new BitmapFactory().decodeResource(getResources(),R.drawable.danish,options);
imageHeight = image_1.getHeight();
imageWidth = image_1.getWidth();
face = new Face[numberofFaces];
faceDetector = new FaceDetector(imageWidth,imageHeight,numberofFaces);
foundfaces = faceDetector.findFaces(bitmap,face);
if (foundfaces > 0)
{
Toast.makeText(this,"Found Face",Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(this,"No face found",Toast.LENGTH_LONG).show();
}
Canvas canvas = new Canvas();
drawCanvas(canvas);
}
private void drawCanvas(Canvas canvas) {
canvas.drawBitmap(bitmap,0,0,null);
for(int i=0;i<foundfaces;i++)
{
Face faces = face[i];
PointF midPoint = new PointF();
faces.getMidPoint(midPoint);
eyedistance = faces.eyesDistance();
canvas.drawRect((int)midPoint.x - eyedistance,(int) midPoint.y - eyedistance, (int)midPoint.x + eyedistance,(int)midPoint.y + eyedistance,paint);
}
Toast.makeText(this,"Eye Distance: "+eyedistance,Toast.LENGTH_LONG).show();
}
我正在做一个人脸检测项目,并通过 Android 人脸库检测人脸....这段人脸检测代码为我提供了眼睛距离等类似信息的正输出,但没有显示脸上的矩形框 有人可以帮忙吗?
无需编写自己的 drawCanvas,只需覆盖自定义视图的 onDraw
方法即可。
在这个方法中,检查你是否找到了面孔。如果是这样,遍历它们,并使用作为 onDraw
函数的参数给出的 canvas
在每个面上绘制位图。
要在您的视图上触发 onDraw
方法,只需在找到 Faces
后调用 this.invalidate
您可以使用类似 class 的内容,如下所示。
用法将是:
MyView view = (MyView) findViewById(R.id.myview); //id in your xml
view.setImageResource(R.id.your_image);
view.computeFaces();
这是调用 MyView
:
public class MyView extends View {
private Face[] foundFaces;
public MyView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyView(Context context) {
super(context);
}
public void computeFaces() {
//In here, do the Face finding processing, and store the found Faces in the foundFaces variable.
if (numberOfFaces> 0) {
this.invalidate();
}
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if ((foundFaces != null) && (foundFaces.length > 0)) {
for (Face f : foundFaces) {
canvas.drawBitmap(
//your square bitmap,
//x position of the face,
//y position of the face,
//your define paint);
}
}
}
}
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.RGB_565;
bitmap = new BitmapFactory().decodeResource(getResources(),R.drawable.danish,options);
imageHeight = image_1.getHeight();
imageWidth = image_1.getWidth();
face = new Face[numberofFaces];
faceDetector = new FaceDetector(imageWidth,imageHeight,numberofFaces);
foundfaces = faceDetector.findFaces(bitmap,face);
if (foundfaces > 0)
{
Toast.makeText(this,"Found Face",Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(this,"No face found",Toast.LENGTH_LONG).show();
}
Canvas canvas = new Canvas();
drawCanvas(canvas);
}
private void drawCanvas(Canvas canvas) {
canvas.drawBitmap(bitmap,0,0,null);
for(int i=0;i<foundfaces;i++)
{
Face faces = face[i];
PointF midPoint = new PointF();
faces.getMidPoint(midPoint);
eyedistance = faces.eyesDistance();
canvas.drawRect((int)midPoint.x - eyedistance,(int) midPoint.y - eyedistance, (int)midPoint.x + eyedistance,(int)midPoint.y + eyedistance,paint);
}
Toast.makeText(this,"Eye Distance: "+eyedistance,Toast.LENGTH_LONG).show();
}
我正在做一个人脸检测项目,并通过 Android 人脸库检测人脸....这段人脸检测代码为我提供了眼睛距离等类似信息的正输出,但没有显示脸上的矩形框 有人可以帮忙吗?
无需编写自己的 drawCanvas,只需覆盖自定义视图的 onDraw
方法即可。
在这个方法中,检查你是否找到了面孔。如果是这样,遍历它们,并使用作为 onDraw
函数的参数给出的 canvas
在每个面上绘制位图。
要在您的视图上触发 onDraw
方法,只需在找到 Faces
this.invalidate
您可以使用类似 class 的内容,如下所示。
用法将是:
MyView view = (MyView) findViewById(R.id.myview); //id in your xml
view.setImageResource(R.id.your_image);
view.computeFaces();
这是调用 MyView
:
public class MyView extends View {
private Face[] foundFaces;
public MyView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyView(Context context) {
super(context);
}
public void computeFaces() {
//In here, do the Face finding processing, and store the found Faces in the foundFaces variable.
if (numberOfFaces> 0) {
this.invalidate();
}
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if ((foundFaces != null) && (foundFaces.length > 0)) {
for (Face f : foundFaces) {
canvas.drawBitmap(
//your square bitmap,
//x position of the face,
//y position of the face,
//your define paint);
}
}
}
}