Commit 8d895d3e authored by Samesh Buddhika Alahakoon's avatar Samesh Buddhika Alahakoon

Merge branch 'IT18109672' into 'master'

It18109672

See merge request !32
parents dd16be73 388f34a1
......@@ -26,7 +26,6 @@ import com.app.smartphotoeditor.listeners.ml.OnGestureDetected;
import com.app.smartphotoeditor.sdk.Methods;
import com.app.smartphotoeditor.sdk.RealTimeCamera;
import com.app.smartphotoeditor.services.ComputerVision;
import com.app.smartphotoeditor.vision.EyeGazeDetection;
import com.bumptech.glide.Glide;
import com.warkiz.tickseekbar.OnSeekChangeListener;
import com.warkiz.tickseekbar.SeekParams;
......
......@@ -169,6 +169,7 @@ public class EditorActivity extends AppCompatActivity
public void run() {
toolsAdapter.setSelectedPosition(toolsAdapter.getCurrentPosition() - 1);
setRecyclerViewPosition(toolsAdapter.getCurrentPosition());
}
});
......@@ -183,6 +184,7 @@ public class EditorActivity extends AppCompatActivity
public void run() {
toolsAdapter.setSelectedPosition(toolsAdapter.getCurrentPosition() + 1);
setRecyclerViewPosition(toolsAdapter.getCurrentPosition());
}
});
}
......@@ -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;
public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.MyViewHolder>
{
private Context context;
private ArrayList<pictureFacer> list;
private OnAlbumClick onAlbumClick;
private final Context context;
private final ArrayList<pictureFacer> list;
private final OnAlbumClick onAlbumClick;
private int selectedItem = 0;
......@@ -41,7 +41,7 @@ public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.MyViewHolder
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)
{
......@@ -195,8 +195,6 @@ public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.MyViewHolder
this.selectedItem += 4;
notifyItemChanged(this.selectedItem);
}
public void selectedItem(int pos)
{
......@@ -204,7 +202,10 @@ public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.MyViewHolder
this.selectedItem = pos;
notifyItemChanged(this.selectedItem);
}
public int getSelectedItem(){return selectedItem;}
public int getSelectedItem()
{
return selectedItem;
}
public void clickCurrentActiveImage()
{
View view = viewItemList.get(selectedItem);
......
......@@ -7,6 +7,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
......@@ -14,12 +15,15 @@ import com.app.smartphotoeditor.R;
import com.app.smartphotoeditor.listeners.OnToolClicked;
import com.bumptech.glide.Glide;
import org.checkerframework.checker.units.qual.A;
import java.util.ArrayList;
import java.util.List;
public class ToolsAdapter extends RecyclerView.Adapter<ToolsAdapter.MyViewHolder>
{
private List<Drawable> toolList;
private List<String> toolListNames;
private Context context;
private int clickedPos = 0;
......@@ -31,6 +35,7 @@ public class ToolsAdapter extends RecyclerView.Adapter<ToolsAdapter.MyViewHolder
this.listener = listener;
toolList = new ArrayList<>();
toolListNames = new ArrayList<>();
addTools();
}
......@@ -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.restoration));
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
......@@ -57,8 +81,12 @@ public class ToolsAdapter extends RecyclerView.Adapter<ToolsAdapter.MyViewHolder
public void onBindViewHolder(ToolsAdapter.MyViewHolder holder, int position)
{
Drawable drawable = toolList.get(position);
String text = toolListNames.get(position);
Glide.with(context).load(drawable).into(holder.tool_img);
holder.tool_name.setText(text);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
......@@ -87,11 +115,13 @@ public class ToolsAdapter extends RecyclerView.Adapter<ToolsAdapter.MyViewHolder
public class MyViewHolder extends RecyclerView.ViewHolder
{
private ImageView tool_img;
private TextView tool_name;
public MyViewHolder(View itemView)
{
super(itemView);
tool_img = itemView.findViewById(R.id.tool_img);
tool_name = itemView.findViewById(R.id.tool_name);
}
}
public void setSelectedPosition(int pos)
......
......@@ -9,7 +9,6 @@ import com.app.smartphotoeditor.listeners.ml.OnGestureDetected;
import com.app.smartphotoeditor.listeners.ml.OnLandmarkResultChanged;
import com.app.smartphotoeditor.sdk.Methods;
import com.app.smartphotoeditor.vision.EyeBlinkDetection;
import com.app.smartphotoeditor.vision.EyeGazeDetection;
import com.app.smartphotoeditor.vision.FacialLandmarkDetection;
import com.app.smartphotoeditor.vision.GestureDetection;
......@@ -25,7 +24,6 @@ public class ComputerVision
private FacialLandmarkDetection landmarkDetection;
private GestureDetection gestureDetection;
private EyeBlinkDetection eyeBlinkDetection;
private EyeGazeDetection eyeGazeDetection;
//listeners
private final OnGestureDetected gestureListener;
......@@ -45,20 +43,8 @@ public class ComputerVision
setupLandmarkDetection();
setupGestureDetection();
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)
{
landmarkDetection.recognizeImage(mat);
......@@ -125,8 +111,6 @@ public class ComputerVision
if(eyeBlinkDetection != null)
eyeBlinkDetection.detectEyeBlinkState(bitmap);
if(eyeGazeDetection != null)
eyeGazeDetection.detect(bitmap);
}
......
......@@ -24,8 +24,8 @@ public class EyeBlinkDetection
private final int imageSize;
private static final int MIN_EYE_CLOSE_COUNT = 0;
private static final int LONG_EYE_CLOSE_COUNT = 2;
private static final int MAX_EYE_CLOSE_TIME = 3;
private static final int LONG_EYE_CLOSE_COUNT = 4;
private static final int MAX_EYE_CLOSE_TIME = 8;
private int eyeCloseCount = MIN_EYE_CLOSE_COUNT;
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 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/tools_rv"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_height="75dp"
android:layout_marginStart="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
......@@ -8,10 +9,22 @@
android:id="@+id/tool_img"
android:layout_width="60dp"
android:layout_height="60dp"
android:padding="5dp"
app:layout_constraintBottom_toBottomOf="parent"
android:padding="5dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="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>
\ 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