Hello Every one ,
I recently learn face detection in android by searching in google and other blogger i found below code and i have made some change in it .
Hope you will like my code and also shared your information in image processing and your expose in face detection in android.
Below is my android Activity code :
public class FaceDetectActivity extends Activity implements OnClickListener{
private static final int TAKE_PICTURE_CODE = 100;
private static final int MAX_FACES = 5;
private static final int SELECT_PICTURE = 6;
private Bitmap cameraBitmap = null;
private Button btn_TakePhoto;
private Button btn_select_image;
private Button btn_facedetect;
private ImageView imageView;
private int mWidth;
private int mHeight;
private ProgressDialog mProgressDialog;
private Button btn_select_img;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_face_detect);
initDisplay();
btn_TakePhoto=(Button)findViewById(R.id.take_picture);
btn_TakePhoto.setOnClickListener(this);
btn_select_img=(Button)findViewById(R.id.btn_select_gallary);
btn_select_img.setOnClickListener(this);
}
private void initDisplay(){
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
mHeight=metrics.heightPixels;
mWidth=metrics.widthPixels;
Log.v("LOG_TAG", "Wdith is "+ mWidth +"Height is "+ mHeight);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.face_detect, menu);
return true;
}
private void openCamera(){
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, TAKE_PICTURE_CODE);
}
private void processCameraImage(Intent intent){
setContentView(R.layout.face_detect_layout);
btn_facedetect=(Button)findViewById(R.id.detect_face);
btn_facedetect.setOnClickListener(this);
btn_select_image=(Button)findViewById(R.id.btn_pickimag);
btn_select_image.setOnClickListener(this);
imageView= (ImageView)findViewById(R.id.image_view);
cameraBitmap = (Bitmap)intent.getExtras().get("data");
imageView.setImageBitmap(cameraBitmap);
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.take_picture:
openCamera();
break;
case R.id.detect_face:
//detectFaces();
new FaceDetectAsyncTask().execute(cameraBitmap);
break;
case R.id.btn_pickimag:
startImagePicker();
break;
case R.id.btn_select_gallary:
startImagePicker();
break;
}
}
private Object[] detectFaces(Bitmap mBitmap){
Object[] mObject = new Object[2];
if(null != mBitmap){
int width = mBitmap.getWidth();
int height = mBitmap.getHeight();
FaceDetector detector = new FaceDetector(width, height,FaceDetectActivity.MAX_FACES);
Face[] faces = new Face[FaceDetectActivity.MAX_FACES];
Bitmap bitmap565 = Bitmap.createBitmap(width, height, Config.RGB_565);
Paint ditherPaint = new Paint();
Paint drawPaint = new Paint();
ditherPaint.setDither(true);
drawPaint.setColor(Color.GREEN);
drawPaint.setStyle(Paint.Style.STROKE);
drawPaint.setStrokeWidth(2);
Canvas canvas = new Canvas();
canvas.setBitmap(bitmap565);
canvas.drawBitmap(mBitmap, 0, 0, ditherPaint);
int facesFound = detector.findFaces(bitmap565, faces);
PointF midPoint = new PointF();
float eyeDistance = 0.0f;
float confidence = 0.0f;
Log.i("FaceDetector", "Number of faces found: " + facesFound);
if(facesFound > 0)
{
for(int index=0; index<facesFound; ++index){
faces[index].getMidPoint(midPoint);
eyeDistance = faces[index].eyesDistance();
confidence = faces[index].confidence();
Log.i("FaceDetector",
"Confidence: " + confidence +
", Eye distance: " + eyeDistance +
", Mid Point: (" + midPoint.x + ", " + midPoint.y + ")");
canvas.drawRect((int)midPoint.x - eyeDistance ,
(int)midPoint.y - eyeDistance ,
(int)midPoint.x + eyeDistance,
(int)midPoint.y + eyeDistance, drawPaint);
}
}else{
//Toast.makeText(this, "No Face Detect", Toast.LENGTH_SHORT).show();
}
/*String filepath = Environment.getExternalStorageDirectory() + "/facedetect" + System.currentTimeMillis() + ".jpg";
try {
FileOutputStream fos = new FileOutputStream(filepath);
bitmap565.compress(CompressFormat.JPEG, 90, fos);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}*/
/* ImageView imageView = (ImageView)findViewById(R.id.image_view);
imageView.setImageBitmap(bitmap565);*/
mObject[0]=facesFound;
mObject[1]=bitmap565;
return mObject;
}
return mObject;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(TAKE_PICTURE_CODE == requestCode){
if(Activity.RESULT_OK==resultCode){
processCameraImage(data);
}else{
Toast.makeText(this, "You have not capture Image", Toast.LENGTH_SHORT).show();
setContentView(R.layout.face_detect_layout);
btn_facedetect=(Button)findViewById(R.id.detect_face);
btn_facedetect.setOnClickListener(this);
btn_select_image=(Button)findViewById(R.id.btn_pickimag);
btn_select_image.setOnClickListener(this);
imageView= (ImageView)findViewById(R.id.image_view);
}
}else if(SELECT_PICTURE==requestCode){
if(Activity.RESULT_OK==resultCode){
Uri selectedImageUri = data.getData();
String selectedImagePath = getPath(selectedImageUri);
setContentView(R.layout.face_detect_layout);
btn_facedetect=(Button)findViewById(R.id.detect_face);
btn_facedetect.setOnClickListener(this);
btn_select_image=(Button)findViewById(R.id.btn_pickimag);
btn_select_image.setOnClickListener(this);
imageView= (ImageView)findViewById(R.id.image_view);
updateImageFromGallary(selectedImagePath);
}else{
}
}
}
private void updateImageFromGallary(String imgPath){
try{
cameraBitmap=null;
//cameraBitmap=BitmapFactory.decodeFile(imgPath);
cameraBitmap=decodeSampledBitmapFromResource(getResources(),imgPath,mWidth,mHeight);
imageView.setImageBitmap(cameraBitmap);
Toast.makeText(this, "Press Face detect for Face Detection", Toast.LENGTH_SHORT).show();
}catch(OutOfMemoryError outMemeoryError){
Toast.makeText(this, "Unable to Load Image", Toast.LENGTH_SHORT).show();
}
}
private void startImagePicker(){
// in onCreate or any event where your want the user to
// select a file
/*Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);*/
Intent intent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(Intent.createChooser(intent,
"Select Picture"), SELECT_PICTURE);
}
public String getPath(Uri uri) {
Uri selectedImage = uri;
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
return filePath;
/* String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);*/
}
public static int calculateInSampleSize(
BitmapFactory.Options options, int reqWidth, int reqHeight) {
// Raw height and width of image
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;
if (height > reqHeight || width > reqWidth) {
// Calculate ratios of height and width to requested height and width
final int heightRatio = Math.round((float) height / (float) reqHeight);
final int widthRatio = Math.round((float) width / (float) reqWidth);
// Choose the smallest ratio as inSampleSize value, this will guarantee
// a final image with both dimensions larger than or equal to the
// requested height and width.
inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
}
return inSampleSize;
}
public static Bitmap decodeSampledBitmapFromResource(Resources res, String path,
int reqWidth, int reqHeight) {
// First decode with inJustDecodeBounds=true to check dimensions
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
// BitmapFactory.decodeResource(res, resId, options);
// BitmapFactory.decodeFile(path);
BitmapFactory.decodeFile(path, options);
// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
//return BitmapFactory.decodeResource(res, resId, options);
return BitmapFactory.decodeFile(path, options);
}
public class FaceDetectAsyncTask extends AsyncTask<Bitmap, Void, Object[]>{
@Override
protected void onPostExecute(Object[] result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
dismissProgressDialog();
if(result!=null){
if(result[0]!=null){
int faceDetect=(Integer) result[0];
if(faceDetect>0){
ImageView imageView = (ImageView)findViewById(R.id.image_view);
imageView.setImageBitmap((Bitmap) result[1]);
}else{
Toast.makeText(FaceDetectActivity.this, "No Face Detect", Toast.LENGTH_SHORT).show();
}
}else{
Toast.makeText(FaceDetectActivity.this, "No Face Detect", Toast.LENGTH_SHORT).show();
}
}
}
/*@Override
protected void onPostExecute(Bitmap result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
dismissProgressDialog();
ImageView imageView = (ImageView)findViewById(R.id.image_view);
imageView.setImageBitmap(result);
}
*/
@Override
protected void onPreExecute() {
super.onPreExecute();
showProgressDialog();
}
@Override
protected Object[] doInBackground(Bitmap... params) {
// TODO Auto-generated method stub
Bitmap mBitmap=params[0];
Object [] mObjArray;
mObjArray=detectFaces(mBitmap);
return mObjArray;
}
}
private void showProgressDialog(){
if(mProgressDialog!=null && mProgressDialog.isShowing()){
return ;
}else{
mProgressDialog=new ProgressDialog(this);
mProgressDialog.setTitle("Please wait...");
mProgressDialog.setMessage("Detecting face from image");
mProgressDialog.setCancelable(false);
mProgressDialog.show();
}
}
private void dismissProgressDialog(){
if(mProgressDialog!=null && mProgressDialog.isShowing()){
mProgressDialog.dismiss();
mProgressDialog=null;
}
}
}
Here are my layout files code:
activity_face_detection.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".FaceDetectActivity"
android:gravity="center"
>
<!-- <TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/app_info"
android:gravity="center_horizontal"
android:layout_weight="1.0"
android:id="@+id/txt_appinfo"
/> -->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/take_picture"
android:layout_margin="5dip"
android:text="@string/take_picture"
android:layout_gravity="center_horizontal"
android:layout_centerHorizontal="true"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_select_gallary"
android:layout_margin="5dip"
android:text="@string/select_image_from_gallary"
android:layout_gravity="center_horizontal"
android:layout_centerHorizontal="true"
android:layout_below="@+id/take_picture"
/>
</RelativeLayout>
face_detect_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/image_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.0"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/detect_face"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/detect_face"
android:layout_gravity="center_vertical"
/>
<Button
android:id="@+id/btn_pickimag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/select_image_from_gallary" />
</LinearLayout>
</LinearLayout>
I recently learn face detection in android by searching in google and other blogger i found below code and i have made some change in it .
Hope you will like my code and also shared your information in image processing and your expose in face detection in android.
Below is my android Activity code :
public class FaceDetectActivity extends Activity implements OnClickListener{
private static final int TAKE_PICTURE_CODE = 100;
private static final int MAX_FACES = 5;
private static final int SELECT_PICTURE = 6;
private Bitmap cameraBitmap = null;
private Button btn_TakePhoto;
private Button btn_select_image;
private Button btn_facedetect;
private ImageView imageView;
private int mWidth;
private int mHeight;
private ProgressDialog mProgressDialog;
private Button btn_select_img;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_face_detect);
initDisplay();
btn_TakePhoto=(Button)findViewById(R.id.take_picture);
btn_TakePhoto.setOnClickListener(this);
btn_select_img=(Button)findViewById(R.id.btn_select_gallary);
btn_select_img.setOnClickListener(this);
}
private void initDisplay(){
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
mHeight=metrics.heightPixels;
mWidth=metrics.widthPixels;
Log.v("LOG_TAG", "Wdith is "+ mWidth +"Height is "+ mHeight);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.face_detect, menu);
return true;
}
private void openCamera(){
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, TAKE_PICTURE_CODE);
}
private void processCameraImage(Intent intent){
setContentView(R.layout.face_detect_layout);
btn_facedetect=(Button)findViewById(R.id.detect_face);
btn_facedetect.setOnClickListener(this);
btn_select_image=(Button)findViewById(R.id.btn_pickimag);
btn_select_image.setOnClickListener(this);
imageView= (ImageView)findViewById(R.id.image_view);
cameraBitmap = (Bitmap)intent.getExtras().get("data");
imageView.setImageBitmap(cameraBitmap);
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.take_picture:
openCamera();
break;
case R.id.detect_face:
//detectFaces();
new FaceDetectAsyncTask().execute(cameraBitmap);
break;
case R.id.btn_pickimag:
startImagePicker();
break;
case R.id.btn_select_gallary:
startImagePicker();
break;
}
}
private Object[] detectFaces(Bitmap mBitmap){
Object[] mObject = new Object[2];
if(null != mBitmap){
int width = mBitmap.getWidth();
int height = mBitmap.getHeight();
FaceDetector detector = new FaceDetector(width, height,FaceDetectActivity.MAX_FACES);
Face[] faces = new Face[FaceDetectActivity.MAX_FACES];
Bitmap bitmap565 = Bitmap.createBitmap(width, height, Config.RGB_565);
Paint ditherPaint = new Paint();
Paint drawPaint = new Paint();
ditherPaint.setDither(true);
drawPaint.setColor(Color.GREEN);
drawPaint.setStyle(Paint.Style.STROKE);
drawPaint.setStrokeWidth(2);
Canvas canvas = new Canvas();
canvas.setBitmap(bitmap565);
canvas.drawBitmap(mBitmap, 0, 0, ditherPaint);
int facesFound = detector.findFaces(bitmap565, faces);
PointF midPoint = new PointF();
float eyeDistance = 0.0f;
float confidence = 0.0f;
Log.i("FaceDetector", "Number of faces found: " + facesFound);
if(facesFound > 0)
{
for(int index=0; index<facesFound; ++index){
faces[index].getMidPoint(midPoint);
eyeDistance = faces[index].eyesDistance();
confidence = faces[index].confidence();
Log.i("FaceDetector",
"Confidence: " + confidence +
", Eye distance: " + eyeDistance +
", Mid Point: (" + midPoint.x + ", " + midPoint.y + ")");
canvas.drawRect((int)midPoint.x - eyeDistance ,
(int)midPoint.y - eyeDistance ,
(int)midPoint.x + eyeDistance,
(int)midPoint.y + eyeDistance, drawPaint);
}
}else{
//Toast.makeText(this, "No Face Detect", Toast.LENGTH_SHORT).show();
}
/*String filepath = Environment.getExternalStorageDirectory() + "/facedetect" + System.currentTimeMillis() + ".jpg";
try {
FileOutputStream fos = new FileOutputStream(filepath);
bitmap565.compress(CompressFormat.JPEG, 90, fos);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}*/
/* ImageView imageView = (ImageView)findViewById(R.id.image_view);
imageView.setImageBitmap(bitmap565);*/
mObject[0]=facesFound;
mObject[1]=bitmap565;
return mObject;
}
return mObject;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(TAKE_PICTURE_CODE == requestCode){
if(Activity.RESULT_OK==resultCode){
processCameraImage(data);
}else{
Toast.makeText(this, "You have not capture Image", Toast.LENGTH_SHORT).show();
setContentView(R.layout.face_detect_layout);
btn_facedetect=(Button)findViewById(R.id.detect_face);
btn_facedetect.setOnClickListener(this);
btn_select_image=(Button)findViewById(R.id.btn_pickimag);
btn_select_image.setOnClickListener(this);
imageView= (ImageView)findViewById(R.id.image_view);
}
}else if(SELECT_PICTURE==requestCode){
if(Activity.RESULT_OK==resultCode){
Uri selectedImageUri = data.getData();
String selectedImagePath = getPath(selectedImageUri);
setContentView(R.layout.face_detect_layout);
btn_facedetect=(Button)findViewById(R.id.detect_face);
btn_facedetect.setOnClickListener(this);
btn_select_image=(Button)findViewById(R.id.btn_pickimag);
btn_select_image.setOnClickListener(this);
imageView= (ImageView)findViewById(R.id.image_view);
updateImageFromGallary(selectedImagePath);
}else{
}
}
}
private void updateImageFromGallary(String imgPath){
try{
cameraBitmap=null;
//cameraBitmap=BitmapFactory.decodeFile(imgPath);
cameraBitmap=decodeSampledBitmapFromResource(getResources(),imgPath,mWidth,mHeight);
imageView.setImageBitmap(cameraBitmap);
Toast.makeText(this, "Press Face detect for Face Detection", Toast.LENGTH_SHORT).show();
}catch(OutOfMemoryError outMemeoryError){
Toast.makeText(this, "Unable to Load Image", Toast.LENGTH_SHORT).show();
}
}
private void startImagePicker(){
// in onCreate or any event where your want the user to
// select a file
/*Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);*/
Intent intent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(Intent.createChooser(intent,
"Select Picture"), SELECT_PICTURE);
}
public String getPath(Uri uri) {
Uri selectedImage = uri;
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
return filePath;
/* String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);*/
}
public static int calculateInSampleSize(
BitmapFactory.Options options, int reqWidth, int reqHeight) {
// Raw height and width of image
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;
if (height > reqHeight || width > reqWidth) {
// Calculate ratios of height and width to requested height and width
final int heightRatio = Math.round((float) height / (float) reqHeight);
final int widthRatio = Math.round((float) width / (float) reqWidth);
// Choose the smallest ratio as inSampleSize value, this will guarantee
// a final image with both dimensions larger than or equal to the
// requested height and width.
inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
}
return inSampleSize;
}
public static Bitmap decodeSampledBitmapFromResource(Resources res, String path,
int reqWidth, int reqHeight) {
// First decode with inJustDecodeBounds=true to check dimensions
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
// BitmapFactory.decodeResource(res, resId, options);
// BitmapFactory.decodeFile(path);
BitmapFactory.decodeFile(path, options);
// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
//return BitmapFactory.decodeResource(res, resId, options);
return BitmapFactory.decodeFile(path, options);
}
public class FaceDetectAsyncTask extends AsyncTask<Bitmap, Void, Object[]>{
@Override
protected void onPostExecute(Object[] result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
dismissProgressDialog();
if(result!=null){
if(result[0]!=null){
int faceDetect=(Integer) result[0];
if(faceDetect>0){
ImageView imageView = (ImageView)findViewById(R.id.image_view);
imageView.setImageBitmap((Bitmap) result[1]);
}else{
Toast.makeText(FaceDetectActivity.this, "No Face Detect", Toast.LENGTH_SHORT).show();
}
}else{
Toast.makeText(FaceDetectActivity.this, "No Face Detect", Toast.LENGTH_SHORT).show();
}
}
}
/*@Override
protected void onPostExecute(Bitmap result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
dismissProgressDialog();
ImageView imageView = (ImageView)findViewById(R.id.image_view);
imageView.setImageBitmap(result);
}
*/
@Override
protected void onPreExecute() {
super.onPreExecute();
showProgressDialog();
}
@Override
protected Object[] doInBackground(Bitmap... params) {
// TODO Auto-generated method stub
Bitmap mBitmap=params[0];
Object [] mObjArray;
mObjArray=detectFaces(mBitmap);
return mObjArray;
}
}
private void showProgressDialog(){
if(mProgressDialog!=null && mProgressDialog.isShowing()){
return ;
}else{
mProgressDialog=new ProgressDialog(this);
mProgressDialog.setTitle("Please wait...");
mProgressDialog.setMessage("Detecting face from image");
mProgressDialog.setCancelable(false);
mProgressDialog.show();
}
}
private void dismissProgressDialog(){
if(mProgressDialog!=null && mProgressDialog.isShowing()){
mProgressDialog.dismiss();
mProgressDialog=null;
}
}
}
Here are my layout files code:
activity_face_detection.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".FaceDetectActivity"
android:gravity="center"
>
<!-- <TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/app_info"
android:gravity="center_horizontal"
android:layout_weight="1.0"
android:id="@+id/txt_appinfo"
/> -->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/take_picture"
android:layout_margin="5dip"
android:text="@string/take_picture"
android:layout_gravity="center_horizontal"
android:layout_centerHorizontal="true"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_select_gallary"
android:layout_margin="5dip"
android:text="@string/select_image_from_gallary"
android:layout_gravity="center_horizontal"
android:layout_centerHorizontal="true"
android:layout_below="@+id/take_picture"
/>
</RelativeLayout>
face_detect_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/image_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.0"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/detect_face"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/detect_face"
android:layout_gravity="center_vertical"
/>
<Button
android:id="@+id/btn_pickimag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/select_image_from_gallary" />
</LinearLayout>
</LinearLayout>
hi brother!
ReplyDeletethis is a great effort you made ...
i am working on the same project of image processing ...
can you please guide me what libraries will use in this project.. or suggest me what libs will use in your code........
Sorry Dear But i have not ready demo
ReplyDeletePlease provide your code with one additional feature. Crop an image of a person if multiple face detected.
ReplyDelete