Commit 75fa56ce authored by samesh97's avatar samesh97

finalizing integration.

parent 9a53cc6f
...@@ -26,7 +26,6 @@ import com.app.smartphotoeditor.listeners.ml.OnGestureDetected; ...@@ -26,7 +26,6 @@ import com.app.smartphotoeditor.listeners.ml.OnGestureDetected;
import com.app.smartphotoeditor.sdk.Methods; import com.app.smartphotoeditor.sdk.Methods;
import com.app.smartphotoeditor.sdk.RealTimeCamera; import com.app.smartphotoeditor.sdk.RealTimeCamera;
import com.app.smartphotoeditor.services.ComputerVision; import com.app.smartphotoeditor.services.ComputerVision;
import com.app.smartphotoeditor.vision.EyeGazeDetection;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.warkiz.tickseekbar.OnSeekChangeListener; import com.warkiz.tickseekbar.OnSeekChangeListener;
import com.warkiz.tickseekbar.SeekParams; import com.warkiz.tickseekbar.SeekParams;
......
...@@ -169,6 +169,7 @@ public class EditorActivity extends AppCompatActivity ...@@ -169,6 +169,7 @@ public class EditorActivity extends AppCompatActivity
public void run() { public void run() {
toolsAdapter.setSelectedPosition(toolsAdapter.getCurrentPosition() - 1); toolsAdapter.setSelectedPosition(toolsAdapter.getCurrentPosition() - 1);
setRecyclerViewPosition(toolsAdapter.getCurrentPosition());
} }
}); });
...@@ -183,6 +184,7 @@ public class EditorActivity extends AppCompatActivity ...@@ -183,6 +184,7 @@ public class EditorActivity extends AppCompatActivity
public void run() { public void run() {
toolsAdapter.setSelectedPosition(toolsAdapter.getCurrentPosition() + 1); toolsAdapter.setSelectedPosition(toolsAdapter.getCurrentPosition() + 1);
setRecyclerViewPosition(toolsAdapter.getCurrentPosition());
} }
}); });
} }
...@@ -335,4 +337,14 @@ public class EditorActivity extends AppCompatActivity ...@@ -335,4 +337,14 @@ public class EditorActivity extends AppCompatActivity
} }
}); });
} }
public void setRecyclerViewPosition(int pos)
{
runOnUiThread(new Runnable() {
@Override
public void run() {
tools_rv.getLayoutManager().scrollToPosition(pos);
}
});
}
} }
\ No newline at end of file
...@@ -31,9 +31,9 @@ import java.util.logging.Handler; ...@@ -31,9 +31,9 @@ import java.util.logging.Handler;
public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.MyViewHolder> public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.MyViewHolder>
{ {
private Context context; private final Context context;
private ArrayList<pictureFacer> list; private final ArrayList<pictureFacer> list;
private OnAlbumClick onAlbumClick; private final OnAlbumClick onAlbumClick;
private int selectedItem = 0; private int selectedItem = 0;
...@@ -41,7 +41,7 @@ public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.MyViewHolder ...@@ -41,7 +41,7 @@ public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.MyViewHolder
private int count = MAX_TIME; private int count = MAX_TIME;
private HashMap<Integer,View> viewItemList = new HashMap<>(); private final HashMap<Integer,View> viewItemList = new HashMap<>();
public ImageAdapter(Context context, ArrayList<pictureFacer> list, OnAlbumClick onAlbumClick) public ImageAdapter(Context context, ArrayList<pictureFacer> list, OnAlbumClick onAlbumClick)
{ {
...@@ -195,8 +195,6 @@ public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.MyViewHolder ...@@ -195,8 +195,6 @@ public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.MyViewHolder
this.selectedItem += 4; this.selectedItem += 4;
notifyItemChanged(this.selectedItem); notifyItemChanged(this.selectedItem);
} }
public void selectedItem(int pos) public void selectedItem(int pos)
{ {
...@@ -204,7 +202,10 @@ public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.MyViewHolder ...@@ -204,7 +202,10 @@ public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.MyViewHolder
this.selectedItem = pos; this.selectedItem = pos;
notifyItemChanged(this.selectedItem); notifyItemChanged(this.selectedItem);
} }
public int getSelectedItem(){return selectedItem;} public int getSelectedItem()
{
return selectedItem;
}
public void clickCurrentActiveImage() public void clickCurrentActiveImage()
{ {
View view = viewItemList.get(selectedItem); View view = viewItemList.get(selectedItem);
......
...@@ -7,6 +7,7 @@ import android.view.LayoutInflater; ...@@ -7,6 +7,7 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
...@@ -14,12 +15,15 @@ import com.app.smartphotoeditor.R; ...@@ -14,12 +15,15 @@ import com.app.smartphotoeditor.R;
import com.app.smartphotoeditor.listeners.OnToolClicked; import com.app.smartphotoeditor.listeners.OnToolClicked;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import org.checkerframework.checker.units.qual.A;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class ToolsAdapter extends RecyclerView.Adapter<ToolsAdapter.MyViewHolder> public class ToolsAdapter extends RecyclerView.Adapter<ToolsAdapter.MyViewHolder>
{ {
private List<Drawable> toolList; private List<Drawable> toolList;
private List<String> toolListNames;
private Context context; private Context context;
private int clickedPos = 0; private int clickedPos = 0;
...@@ -31,6 +35,7 @@ public class ToolsAdapter extends RecyclerView.Adapter<ToolsAdapter.MyViewHolder ...@@ -31,6 +35,7 @@ public class ToolsAdapter extends RecyclerView.Adapter<ToolsAdapter.MyViewHolder
this.listener = listener; this.listener = listener;
toolList = new ArrayList<>(); toolList = new ArrayList<>();
toolListNames = new ArrayList<>();
addTools(); addTools();
} }
...@@ -44,6 +49,25 @@ public class ToolsAdapter extends RecyclerView.Adapter<ToolsAdapter.MyViewHolder ...@@ -44,6 +49,25 @@ public class ToolsAdapter extends RecyclerView.Adapter<ToolsAdapter.MyViewHolder
toolList.add(context.getResources().getDrawable(R.drawable.de_noising)); toolList.add(context.getResources().getDrawable(R.drawable.de_noising));
toolList.add(context.getResources().getDrawable(R.drawable.restoration)); toolList.add(context.getResources().getDrawable(R.drawable.restoration));
toolList.add(context.getResources().getDrawable(R.drawable.light_enhacement)); toolList.add(context.getResources().getDrawable(R.drawable.light_enhacement));
toolList.add(context.getResources().getDrawable(R.drawable.animated_background));
toolList.add(context.getResources().getDrawable(R.drawable.background_change));
toolList.add(context.getResources().getDrawable(R.drawable.blur_effect));
toolList.add(context.getResources().getDrawable(R.drawable.bokeh_effect));
toolList.add(context.getResources().getDrawable(R.drawable.splash_effect));
toolListNames.add("Brightness");
toolListNames.add("Saturation");
toolListNames.add("Effects");
toolListNames.add("De-noising");
toolListNames.add("Restoration");
toolListNames.add("Enhancement");
toolListNames.add("Animated");
toolListNames.add("Background");
toolListNames.add("Blur");
toolListNames.add("Bokeh");
toolListNames.add("Splash");
} }
@Override @Override
...@@ -57,8 +81,12 @@ public class ToolsAdapter extends RecyclerView.Adapter<ToolsAdapter.MyViewHolder ...@@ -57,8 +81,12 @@ public class ToolsAdapter extends RecyclerView.Adapter<ToolsAdapter.MyViewHolder
public void onBindViewHolder(ToolsAdapter.MyViewHolder holder, int position) public void onBindViewHolder(ToolsAdapter.MyViewHolder holder, int position)
{ {
Drawable drawable = toolList.get(position); Drawable drawable = toolList.get(position);
String text = toolListNames.get(position);
Glide.with(context).load(drawable).into(holder.tool_img); Glide.with(context).load(drawable).into(holder.tool_img);
holder.tool_name.setText(text);
holder.itemView.setOnClickListener(new View.OnClickListener() { holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
...@@ -87,11 +115,13 @@ public class ToolsAdapter extends RecyclerView.Adapter<ToolsAdapter.MyViewHolder ...@@ -87,11 +115,13 @@ public class ToolsAdapter extends RecyclerView.Adapter<ToolsAdapter.MyViewHolder
public class MyViewHolder extends RecyclerView.ViewHolder public class MyViewHolder extends RecyclerView.ViewHolder
{ {
private ImageView tool_img; private ImageView tool_img;
private TextView tool_name;
public MyViewHolder(View itemView) public MyViewHolder(View itemView)
{ {
super(itemView); super(itemView);
tool_img = itemView.findViewById(R.id.tool_img); tool_img = itemView.findViewById(R.id.tool_img);
tool_name = itemView.findViewById(R.id.tool_name);
} }
} }
public void setSelectedPosition(int pos) public void setSelectedPosition(int pos)
......
...@@ -9,7 +9,6 @@ import com.app.smartphotoeditor.listeners.ml.OnGestureDetected; ...@@ -9,7 +9,6 @@ import com.app.smartphotoeditor.listeners.ml.OnGestureDetected;
import com.app.smartphotoeditor.listeners.ml.OnLandmarkResultChanged; import com.app.smartphotoeditor.listeners.ml.OnLandmarkResultChanged;
import com.app.smartphotoeditor.sdk.Methods; import com.app.smartphotoeditor.sdk.Methods;
import com.app.smartphotoeditor.vision.EyeBlinkDetection; import com.app.smartphotoeditor.vision.EyeBlinkDetection;
import com.app.smartphotoeditor.vision.EyeGazeDetection;
import com.app.smartphotoeditor.vision.FacialLandmarkDetection; import com.app.smartphotoeditor.vision.FacialLandmarkDetection;
import com.app.smartphotoeditor.vision.GestureDetection; import com.app.smartphotoeditor.vision.GestureDetection;
...@@ -25,7 +24,6 @@ public class ComputerVision ...@@ -25,7 +24,6 @@ public class ComputerVision
private FacialLandmarkDetection landmarkDetection; private FacialLandmarkDetection landmarkDetection;
private GestureDetection gestureDetection; private GestureDetection gestureDetection;
private EyeBlinkDetection eyeBlinkDetection; private EyeBlinkDetection eyeBlinkDetection;
private EyeGazeDetection eyeGazeDetection;
//listeners //listeners
private final OnGestureDetected gestureListener; private final OnGestureDetected gestureListener;
...@@ -45,20 +43,8 @@ public class ComputerVision ...@@ -45,20 +43,8 @@ public class ComputerVision
setupLandmarkDetection(); setupLandmarkDetection();
setupGestureDetection(); setupGestureDetection();
setupEyeBlinkDetection(); setupEyeBlinkDetection();
setupEyeGazeDetection();
} }
private void setupEyeGazeDetection()
{
try {
eyeGazeDetection = new EyeGazeDetection(activity.getAssets(),activity.getApplicationContext(),
"eye_gaze.tflite",224);
} catch (IOException e) {
e.printStackTrace();
}
}
public void setMat(Mat mat) public void setMat(Mat mat)
{ {
landmarkDetection.recognizeImage(mat); landmarkDetection.recognizeImage(mat);
...@@ -125,8 +111,6 @@ public class ComputerVision ...@@ -125,8 +111,6 @@ public class ComputerVision
if(eyeBlinkDetection != null) if(eyeBlinkDetection != null)
eyeBlinkDetection.detectEyeBlinkState(bitmap); eyeBlinkDetection.detectEyeBlinkState(bitmap);
if(eyeGazeDetection != null)
eyeGazeDetection.detect(bitmap);
} }
......
...@@ -24,8 +24,8 @@ public class EyeBlinkDetection ...@@ -24,8 +24,8 @@ public class EyeBlinkDetection
private final int imageSize; private final int imageSize;
private static final int MIN_EYE_CLOSE_COUNT = 0; private static final int MIN_EYE_CLOSE_COUNT = 0;
private static final int LONG_EYE_CLOSE_COUNT = 2; private static final int LONG_EYE_CLOSE_COUNT = 4;
private static final int MAX_EYE_CLOSE_TIME = 3; private static final int MAX_EYE_CLOSE_TIME = 8;
private int eyeCloseCount = MIN_EYE_CLOSE_COUNT; private int eyeCloseCount = MIN_EYE_CLOSE_COUNT;
private final OnEyeStatusChanged listener; private final OnEyeStatusChanged listener;
......
package com.app.smartphotoeditor.vision;
import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.speech.tts.TextToSpeech;
import android.util.Log;
import com.app.smartphotoeditor.listeners.ml.OnEyeStatusChanged;
import org.tensorflow.lite.Interpreter;
import java.io.IOException;
import java.lang.reflect.Array;
import java.nio.ByteBuffer;
import java.util.Locale;
import static com.app.smartphotoeditor.sdk.Methods.convertBitmapToByteBuffer;
import static com.app.smartphotoeditor.sdk.Methods.loadModelFile;
public class EyeGazeDetection
{
private final Interpreter interpreter;
private final int imageSize;
public EyeGazeDetection(AssetManager assetManager, Context context, String modelPath, int inputSize) throws IOException
{
imageSize = inputSize;
interpreter = new Interpreter(loadModelFile(assetManager,modelPath),null);
}
public void detect(Bitmap bitmap)
{
//scale the bitmap
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap,imageSize,imageSize,false);
//convert bitmap to byteBuffer
ByteBuffer byteBuffer = convertBitmapToByteBuffer(scaledBitmap,imageSize);
//create 2d array to store results
float[][] result = new float[1][3];
//run the model
interpreter.run(byteBuffer,result);
for(int i = 0; i < result.length; i++)
{
//float center = (float) Array.get(Array.get(result, 0), i + 0);
float left = (float) Array.get(Array.get(result, 0), i + 0);
float right = (float) Array.get(Array.get(result, 0), i + 1);
float center = (float) Array.get(Array.get(result, 0), i + 2);
Log.d("GazePointer","" + right);
if(left > right && left >= 0.2)
{
Log.d("Hello22","Left - " + left);
}
else if(right >= 0.2)
{
Log.d("Hello22","Right - " + right);
}
// if(center >= .95 && center <= 1)
// {
// //center
// //Log.d("Hello22","Center");
// }
// else if(left >= .95 && left <= 1)
// {
// //left
// Log.d("Hello22","Left");
// }
// else if(right >= .95 && right <= 1)
// {
// //right
// Log.d("Hello22","Right");
// }
}
}
}
...@@ -65,7 +65,7 @@ ...@@ -65,7 +65,7 @@
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/tools_rv" android:id="@+id/tools_rv"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="50dp" android:layout_height="75dp"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
...@@ -8,10 +9,22 @@ ...@@ -8,10 +9,22 @@
android:id="@+id/tool_img" android:id="@+id/tool_img"
android:layout_width="60dp" android:layout_width="60dp"
android:layout_height="60dp" android:layout_height="60dp"
android:padding="5dp" android:padding="5dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tool_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Brightness"
android:textColor="@color/white"
android:textSize="10sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tool_img" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment