Skip to content

Commit 9c00b12

Browse files
committed
Colour filtering ui
1 parent c03924c commit 9c00b12

File tree

7 files changed

+102
-65
lines changed

7 files changed

+102
-65
lines changed

artcodes-android.iml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,20 +63,20 @@
6363
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
6464
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
6565
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
66-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
67-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
68-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
69-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
70-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
71-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
72-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
7366
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
7467
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
7568
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
7669
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
7770
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
7871
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
7972
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
73+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
74+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
75+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
76+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
77+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
78+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
79+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
8080
<excludeFolder url="file://$MODULE_DIR$/build/.DS_Store" />
8181
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
8282
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />

artcodes-scanner/src/main/java/uk/ac/horizon/artcodes/detect/ArtcodeDetector.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import android.util.Log;
2525
import android.view.View;
2626

27-
import org.opencv.android.OpenCVLoader;
2827
import org.opencv.core.Rect;
2928

3029
import uk.ac.horizon.artcodes.model.Experience;
@@ -35,14 +34,6 @@
3534

3635
public class ArtcodeDetector extends Detector
3736
{
38-
static
39-
{
40-
if (!OpenCVLoader.initDebug())
41-
{
42-
Log.e("OpenCV", "Error Initializing OpenCV");
43-
}
44-
}
45-
4637
private int margin = 100;
4738

4839
@BindingAdapter("height")

artcodes-scanner/src/main/java/uk/ac/horizon/artcodes/detect/Detector.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import android.graphics.Bitmap;
2525
import android.util.Log;
2626

27+
import org.opencv.android.OpenCVLoader;
2728
import org.opencv.core.Rect;
2829

2930
import java.util.ArrayList;
@@ -35,6 +36,14 @@
3536

3637
public class Detector extends BaseObservable
3738
{
39+
static
40+
{
41+
if (!OpenCVLoader.initDebug())
42+
{
43+
Log.e("OpenCV", "Error Initializing OpenCV");
44+
}
45+
}
46+
3847
protected final List<ImageProcessor> pipeline = new ArrayList<>();
3948
protected final List<DetectorSetting> settings = new ArrayList<>();
4049
protected final ImageBuffers buffers = new ImageBuffers();
@@ -123,6 +132,6 @@ public byte[] createBuffer(CameraInfo info, int surfaceWidth, int surfaceHeight)
123132

124133
protected Rect createROI(int imageWidth, int imageHeight, int surfaceWidth, int surfaceHeight)
125134
{
126-
return null;
135+
return new Rect(0, 0, imageWidth, imageHeight);
127136
}
128137
}

artcodes-scanner/src/main/java/uk/ac/horizon/artcodes/process/RGBGreyscaler.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,11 @@ public void process(ImageBuffers buffers)
6464
Imgproc.cvtColor(buffers.getTemp(), buffers.getImage(), Imgproc.COLOR_BGR2GRAY);
6565
}
6666

67+
public Channel getChannel()
68+
{
69+
return channel;
70+
}
71+
6772
@Override
6873
public void getSettings(List<DetectorSetting> settings)
6974
{

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ android {
7979

8080
defaultConfig {
8181
applicationId "uk.ac.horizon.aestheticodes"
82-
versionName '3.1.1'
83-
versionCode 400051
82+
versionName '3.1.2'
83+
versionCode 400052
8484
minSdkVersion 15
8585
targetSdkVersion 23
8686
signingConfig signingConfigs.release

src/main/java/uk/ac/horizon/artcodes/fragment/ExperienceEditColourFragment.java

Lines changed: 67 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -24,25 +24,21 @@
2424
import android.view.LayoutInflater;
2525
import android.view.View;
2626
import android.view.ViewGroup;
27+
import android.widget.AdapterView;
28+
import android.widget.BaseAdapter;
29+
import android.widget.TextView;
2730

2831
import java.util.ArrayList;
2932
import java.util.List;
3033

3134
import uk.ac.horizon.artcodes.R;
3235
import uk.ac.horizon.artcodes.databinding.ExperienceEditColourBinding;
3336
import uk.ac.horizon.artcodes.detect.Detector;
34-
import uk.ac.horizon.artcodes.detect.ImageBuffers;
3537
import uk.ac.horizon.artcodes.process.ImageProcessor;
38+
import uk.ac.horizon.artcodes.process.RGBGreyscaler;
3639

3740
public class ExperienceEditColourFragment extends ExperienceEditFragment
3841
{
39-
private final Object lockObject = new Object();
40-
private final List<ImageProcessor> presets = new ArrayList<>();
41-
private final ImageBuffers buffers = new ImageBuffers();
42-
private ExperienceEditColourBinding binding;
43-
private ImageProcessor filter;
44-
private Detector detector;
45-
4642
@Override
4743
public int getTitleResource()
4844
{
@@ -53,41 +49,69 @@ public int getTitleResource()
5349
@Override
5450
public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
5551
{
56-
binding = ExperienceEditColourBinding.inflate(inflater, container, false);
57-
// scanner = new Scanner(getActivity());
58-
//
59-
// binding.cameraSurface.getHolder().addCallback(scanner);
60-
// binding.setBuffers(buffers);
61-
//
62-
// //presets.add(new IntensityGreyscaler());
63-
// presets.add(new RGBGreyscaler(RGBGreyscaler.Channel.red));
64-
// presets.add(new RGBGreyscaler(RGBGreyscaler.Channel.green));
65-
// presets.add(new RGBGreyscaler(RGBGreyscaler.Channel.blue));
66-
// // TODO Add cmy/cmyk/custom?
67-
//
68-
// detector = new Detector(buffers);
69-
// scanner.setFrameProcessor(detector);
70-
//
71-
// binding.colourPresetSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
72-
// {
73-
// @Override
74-
// public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l)
75-
// {
76-
// //String[] names = getResources().getStringArray(R.array.colourPresetNames);
77-
// if (i < presets.size())
78-
// {
79-
// synchronized (lockObject)
80-
// {
81-
// //experience.setGreyscaleOptions(presets.get(i));
82-
// }
83-
// }
84-
// }
85-
//
86-
// @Override
87-
// public void onNothingSelected(AdapterView<?> adapterView)
88-
// {
89-
// }
90-
// });
52+
final ExperienceEditColourBinding binding = ExperienceEditColourBinding.inflate(inflater, container, false);
53+
54+
final List<ImageProcessor> presets = new ArrayList<>();
55+
// TODO presets.add(new IntensityGreyscaler());
56+
presets.add(new RGBGreyscaler(RGBGreyscaler.Channel.red));
57+
presets.add(new RGBGreyscaler(RGBGreyscaler.Channel.green));
58+
presets.add(new RGBGreyscaler(RGBGreyscaler.Channel.blue));
59+
60+
final Detector detector = new Detector();
61+
binding.setDetector(detector);
62+
63+
binding.colourPresetSpinner.setAdapter(new BaseAdapter()
64+
{
65+
@Override
66+
public int getCount()
67+
{
68+
return presets.size();
69+
}
70+
71+
@Override
72+
public Object getItem(final int position)
73+
{
74+
return presets.get(position);
75+
}
76+
77+
@Override
78+
public long getItemId(final int position)
79+
{
80+
return 0;
81+
}
82+
83+
@Override
84+
public View getView(final int position, final View convertView, final ViewGroup parent)
85+
{
86+
View view = convertView;
87+
if(!(view instanceof TextView))
88+
{
89+
view = new TextView(parent.getContext());
90+
}
91+
92+
ImageProcessor processor = presets.get(position);
93+
if(processor instanceof RGBGreyscaler)
94+
{
95+
((TextView)view).setText(((RGBGreyscaler)processor).getChannel().toString());
96+
}
97+
98+
99+
return view;
100+
}
101+
});
102+
binding.colourPresetSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
103+
{
104+
@Override
105+
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l)
106+
{
107+
// TODO
108+
}
109+
110+
@Override
111+
public void onNothingSelected(AdapterView<?> adapterView)
112+
{
113+
}
114+
});
91115

92116
return binding.getRoot();
93117
}

src/main/res/layout/experience_edit_colour.xml

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,26 +21,34 @@
2121

2222
<layout xmlns:android="http://schemas.android.com/apk/res/android"
2323
xmlns:tools="http://schemas.android.com/tools"
24+
xmlns:app="http://schemas.android.com/apk/res-auto"
2425
tools:context=".activities.ExperienceEditActivity">
2526

2627
<data>
2728

2829
<import type="android.view.View"/>
30+
31+
<variable
32+
name="detector"
33+
type="uk.ac.horizon.artcodes.detect.Detector"/>
2934
</data>
3035

3136
<FrameLayout
37+
android:id="@+id/content_frame"
3238
android:layout_width="match_parent"
3339
android:layout_height="match_parent">
3440

35-
<SurfaceView
36-
android:id="@+id/cameraSurface"
41+
<uk.ac.horizon.artcodes.camera.CameraView
42+
android:id="@+id/cameraView"
3743
android:layout_width="fill_parent"
38-
android:layout_height="fill_parent"/>
44+
android:layout_height="fill_parent"
45+
app:detector="@{detector}"/>
3946

4047
<ImageView
4148
android:layout_width="match_parent"
4249
android:layout_height="match_parent"
4350
android:scaleType="fitXY"
51+
app:imageBitmap="@{detector.overlay}"
4452
tools:ignore="ContentDescription"/>
4553

4654
<LinearLayout

0 commit comments

Comments
 (0)