【问题标题】:Augmented reality on android安卓上的增强现实
【发布时间】:2012-03-01 16:17:14
【问题描述】:

我刚刚开始在安卓手机上开发一个基于增强现实的人脸检测项目。到目前为止,我还是 AR(增强现实)的新手,我贡献并评估了面部决定因素的算法,但我对 AR 没有任何想法,想在我的项目中实现 AR 所以请各位专家告诉我,从哪里开始以及我是否需要任何其他工具来创建 AR 应用程序(/我是否必须在 IDE(eclipse)上添加任何插件)?还是有任何其他 IDE 比 Eclipse 更适合 AR?请检查下面的链接并提供您的 cmets,因为我的项目完全看起来像下面给出的链接,

http://www.readwriteweb.com/archives/recognizr_facial_recognition_coming_to_android_phones.php

http://www.blackweb20.com/2010/03/01/recognizr-facial-recognition-on-android/#.TzNswE7xodM

谢谢!

【问题讨论】:

    标签: android image-processing 3d augmented-reality face-detection


    【解决方案1】:

    AR 实现本身很容易。它基本上只是预览图片的叠加,您可以在此叠加上放置您喜欢的任何内容。此项目中包含一个工作示例:

    http://sourceforge.net/projects/javaocr/

    (还有很多其他的)

    棘手的部分从这里开始。对于人脸识别,通常使用 Haar 转换,并且在 OpenCV 中有一些实现(以及其他一些实现) - 但它是否可以在 android java 代码中具有足够的性能以真正有用是值得怀疑的(你必须在本机中做到这一点代码 )。这只是人脸识别——它说你——“嘿,伙计,这是人脸。也许吧”——不是识别。

    至于 IDE,我更喜欢 IntelliJ IDEA,因为它只是更好的 java ide(现在有人会为它私刑;)),并且它有更好的 android 支持。但这是商业产品(免费社区版是免费提供的,个人许可证也不贵)

    【讨论】:

    • 感谢您的回复。而且我还想知道 IntelliJ IDEA 需要artoolkit吗?或者基本上我们需要将要安装在 IDE 中的插件或包用于 AR?否则我可以在没有任何抢占式包或插件包的情况下开始编写关于 AR 的代码
    【解决方案2】:

    你可以试试这个代码:

        public class FaceDetectionActivity extends Activity 
       {
         /** Called when the activity is first created. */
        @Override
         public void onCreate(Bundle savedInstanceState) 
         {
           super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);
        setContentView(new MyView(this));
       }
    
    private class MyView extends View
    {
        private Bitmap myBitmap;
        private int width, height;
        private FaceDetector.Face[] detectedFaces;
        private int NUMBER_OF_FACES=4;
        private FaceDetector faceDetector;
        private int NUMBER_OF_FACE_DETECTED;
        private float eyeDistance;
    
        public MyView(Context context) 
        {
            super(context);
            BitmapFactory.Options bitmapFatoryOptions=new BitmapFactory.Options();
            bitmapFatoryOptions.inPreferredConfig=Bitmap.Config.RGB_565;
            myBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.faces,bitmapFatoryOptions);
            width=myBitmap.getWidth();
            height=myBitmap.getHeight();
            detectedFaces=new FaceDetector.Face[NUMBER_OF_FACES];
            faceDetector=new FaceDetector(width,height,NUMBER_OF_FACES);
            NUMBER_OF_FACE_DETECTED=faceDetector.findFaces(myBitmap, detectedFaces);
        }
    
        @Override
        protected void onDraw(Canvas canvas)
        {
            canvas.drawBitmap(myBitmap, 0,0, null);
            Paint myPaint = new Paint();
            myPaint.setColor(Color.GREEN);
            myPaint.setStyle(Paint.Style.STROKE); 
            myPaint.setStrokeWidth(3);
    
            for(int count=0;count<NUMBER_OF_FACE_DETECTED;count++)
            {
                Face face=detectedFaces[count];
                PointF midPoint=new PointF();
                face.getMidPoint(midPoint);
    
                eyeDistance=face.eyesDistance();
                canvas.drawRect(midPoint.x-eyeDistance, midPoint.y-eyeDistance, midPoint.x+eyeDistance, midPoint.y+eyeDistance, myPaint);
            }
        }
    
     }
    }
    

    此代码将从位图中检测人脸,因此您也应该通过相机实现此技术 干杯。

    【讨论】:

    • 如果您有任何疑问,请告诉我
    • 谢谢您,先生,您如何看待以下算法、HOG、边缘检测、Shift 和均值偏移.. 我的项目不仅是检测的基础,我还必须匹配来自一个数据库。谢谢!
    猜你喜欢
    • 2011-10-17
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多