diff --git a/Lookify/app/src/main/AndroidManifest.xml b/Lookify/app/src/main/AndroidManifest.xml
index 165dde3..ff7d16f 100644
--- a/Lookify/app/src/main/AndroidManifest.xml
+++ b/Lookify/app/src/main/AndroidManifest.xml
@@ -12,11 +12,12 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
+
-
+
diff --git a/Lookify/app/src/main/java/com/example/lookifyv2/Decode.java b/Lookify/app/src/main/java/com/example/lookifyv2/Decode.java
index 6c6a7f8..c476da1 100644
--- a/Lookify/app/src/main/java/com/example/lookifyv2/Decode.java
+++ b/Lookify/app/src/main/java/com/example/lookifyv2/Decode.java
@@ -1,5 +1,6 @@
package com.example.lookifyv2;
+import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
@@ -23,11 +24,15 @@ import org.opencv.android.OpenCVLoader;
import org.opencv.android.Utils;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
+import org.opencv.imgproc.Imgproc;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
+import static org.opencv.imgproc.Imgproc.ADAPTIVE_THRESH_MEAN_C;
+import static org.opencv.imgproc.Imgproc.THRESH_BINARY;
+
public class Decode extends AppCompatActivity {
//inicjacja logów OpenCV
@@ -35,6 +40,9 @@ public class Decode extends AppCompatActivity {
String filePath;
Mat matPic;
+ Mat matPicG;
+ Mat matPicGB;
+ Mat matPicGBT;
//OpenCV domyślnie uruchamia się po onCreate co powoduje problemy - zapobiegamy więc temu
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@@ -65,10 +73,22 @@ public class Decode extends AppCompatActivity {
Bundle extras = getIntent().getExtras();
filePath = extras.getString("takenPic");
matPic = Imgcodecs.imread(filePath);
+ Mat matPicG = new Mat();
+ Mat matPicGB = new Mat();
+ Mat matPicGBT = new Mat();
- String contents = null;
- Bitmap bMap = Bitmap.createBitmap(matPic.width(), matPic.height(), Bitmap.Config.ARGB_8888);
- Utils.matToBitmap(matPic, bMap);
+ //Zdjęcie zamieniane jest na czarno-biały odpowiednik
+ Imgproc.cvtColor(matPic, matPicG, Imgproc.COLOR_RGB2GRAY);
+
+ //Usuwanie "noise'u" przy jednoczesnym zachowywaniu ostrych krawędzi za pomocą bilateralnego filtru
+ Imgproc.bilateralFilter(matPicG, matPicGB, 5, 75, 75);
+
+ //Zwiększanie kontrastu za pomocą thresholdu(wartości adaptywnego zaczerpnięte z https://stackoverflow.com/questions/31289895/threshold-image-using-opencv-java)
+ //Imgproc.adaptiveThreshold(matPicGB, matPicGBT, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 15, 40);
+ Imgproc.threshold(matPicGB, matPicGBT, 100, 255, THRESH_BINARY);
+
+ Bitmap bMap = Bitmap.createBitmap(matPicGBT.width(), matPicGBT.height(), Bitmap.Config.ARGB_8888);
+ Utils.matToBitmap(matPicGBT, bMap);
int[] intArray = new int[bMap.getWidth() * bMap.getHeight()];
bMap.getPixels(intArray, 0, bMap.getWidth(), 0, 0, bMap.getWidth(), bMap.getHeight());
@@ -100,13 +120,16 @@ public class Decode extends AppCompatActivity {
//Szukanie kodu na wczytanym zdjęciu
MultiFormatReader reader = new MultiFormatReader();
+ String contents = null;
try {
Result result = reader.decode(bitmap, hints);
contents = result.getText();
} catch (NotFoundException e) {
e.printStackTrace();
+ Intent intent_DecodeFail = new Intent(this, DecodeFail.class);
+ startActivity(intent_DecodeFail);
+ Decode.this.finish();
}
-
Toast toast = Toast.makeText(this, contents, Toast.LENGTH_LONG);
toast.show();
}
diff --git a/Lookify/app/src/main/java/com/example/lookifyv2/DecodeFail.java b/Lookify/app/src/main/java/com/example/lookifyv2/DecodeFail.java
new file mode 100644
index 0000000..8c1c7fa
--- /dev/null
+++ b/Lookify/app/src/main/java/com/example/lookifyv2/DecodeFail.java
@@ -0,0 +1,47 @@
+package com.example.lookifyv2;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+
+public class DecodeFail extends AppCompatActivity {
+
+ private Button button_tryagain;
+ private Button button_backtomain;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_decode_fail);
+
+ button_tryagain = findViewById(R.id.try_again_button);
+ button_backtomain = findViewById(R.id.backto_main_button);
+
+ button_tryagain.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ openScan();
+ }
+ });
+ button_backtomain.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Finish();
+ }
+ });
+
+ }
+
+ public void Finish(){
+ finish();
+ }
+
+ public void openScan(){
+ Intent intent_Scan = new Intent(this, TakePhoto.class);
+ startActivity(intent_Scan);
+ finish();
+ }
+}
diff --git a/Lookify/app/src/main/res/layout/activity_decode.xml b/Lookify/app/src/main/res/layout/activity_decode.xml
index a4899ff..c979e8f 100644
--- a/Lookify/app/src/main/res/layout/activity_decode.xml
+++ b/Lookify/app/src/main/res/layout/activity_decode.xml
@@ -6,4 +6,15 @@
android:layout_height="match_parent"
tools:context=".Decode">
+
+
\ No newline at end of file
diff --git a/Lookify/app/src/main/res/layout/activity_decode_fail.xml b/Lookify/app/src/main/res/layout/activity_decode_fail.xml
new file mode 100644
index 0000000..f2465c9
--- /dev/null
+++ b/Lookify/app/src/main/res/layout/activity_decode_fail.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file