diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 08bd996..f0b1104 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -14,6 +14,7 @@
+
diff --git a/app/src/main/java/com/carplate/camerax/DBHelper.java b/app/src/main/java/com/carplate/camerax/DBHelper.java
new file mode 100644
index 0000000..58c0658
--- /dev/null
+++ b/app/src/main/java/com/carplate/camerax/DBHelper.java
@@ -0,0 +1,113 @@
+package com.carplate.camerax;
+import android.content.Context;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+
+public class DBHelper extends SQLiteOpenHelper {
+ static final String DATABASE_NAME = "test.db";
+
+ // DBHelper 생성자
+ public DBHelper(Context context, int version) {
+ super(context, DATABASE_NAME, null, version);
+ }
+
+ // Person Table 생성
+ @Override
+ public void onCreate(SQLiteDatabase db) {
+ db.execSQL("CREATE TABLE ExistCar(carNum TEXT)");
+ }
+
+ // Person Table Upgrade
+ @Override
+ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+ db.execSQL("DROP TABLE IF EXISTS Person");
+ onCreate(db);
+ }
+
+ // Person Table 데이터 입력
+ public void insert(String carNum) {
+ SQLiteDatabase db = getWritableDatabase();
+ db.execSQL("INSERT INTO ExistCar VALUES('" + carNum + "')");
+ db.close();
+ }
+
+ /*
+ // Person Table 데이터 수정
+ public void Update(String name, int age, String Addr) {
+ SQLiteDatabase db = getWritableDatabase();
+ db.execSQL("UPDATE Person SET age = " + age + ", ADDR = '" + Addr + "'" + " WHERE NAME = '" + name + "'");
+ db.close();
+ }
+
+
+ // Person Table 데이터 삭제
+ public void Delete(String name) {
+ SQLiteDatabase db = getWritableDatabase();
+ db.execSQL("DELETE Person WHERE NAME = '" + name + "'");
+ db.close();
+ }
+
+ */
+
+ // Person Table 조회
+ public boolean getResult(String carNum) {
+ // 읽기가 가능하게 DB 열기
+ SQLiteDatabase db = getReadableDatabase();
+
+ // DB에 있는 데이터를 쉽게 처리하기 위해 Cursor를 사용하여 테이블에 있는 모든 데이터 출력
+ Cursor cursor = db.rawQuery("SELECT * FROM ExistCar WHERE carNum = ?", new String[] {carNum});
+ while (cursor.moveToNext()) {
+ return true;
+ }
+
+ return false;
+ }
+}
+
+/*
+public class ConnectDB {
+ private static ConnectDB instance = new ConnectDB();
+
+ public static ConnectDB getInstance() {
+ return instance;
+ }
+ public ConnectDB() { }
+
+ // oracle 계정
+ String jdbcUrl = "jdbc:oracle:thin:@IPv4주소:1521:testdb";
+ String userId = "test";
+ String userPw = "test";
+
+ Connection conn = null;
+ PreparedStatement pstmt = null;
+ ResultSet rs = null;
+
+ String sql = "";
+ String returns = "a";
+
+ public String connectionDB(String detectNum) {
+ try {
+ Class.forName("oracle.jdbc.driver.OracleDriver");
+ conn = DriverManager.getConnection(jdbcUrl, userId, userPw);
+
+ sql = "SELECT id FROM plateNumTable WHERE plateNum = ?";
+ pstmt = conn.prepareStatement(sql);
+ pstmt.setString(1, detectNum);
+
+ rs = pstmt.executeQuery();
+ if (rs.next()) {
+ returns = "DB에 존재하는 차량";
+ } else {
+ returns = "DB에 존재하지 않는 차량";
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if (pstmt != null)try {pstmt.close();} catch (SQLException ex) {}
+ if (conn != null)try {conn.close(); } catch (SQLException ex) { }
+ }
+ return returns;
+ }
+}
+*/
\ No newline at end of file
diff --git a/app/src/main/java/com/carplate/camerax/MainActivity.java b/app/src/main/java/com/carplate/camerax/MainActivity.java
index 2c44cd9..6f73cb1 100644
--- a/app/src/main/java/com/carplate/camerax/MainActivity.java
+++ b/app/src/main/java/com/carplate/camerax/MainActivity.java
@@ -1,7 +1,5 @@
package com.carplate.camerax;
-
-
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
@@ -16,6 +14,7 @@
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
+import android.widget.Toast;
import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.CameraBridgeViewBase;
@@ -35,7 +34,9 @@
import org.tensorflow.lite.nnapi.NnApiDelegate;
-
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
@@ -76,6 +77,8 @@ public class MainActivity extends AppCompatActivity
private Bitmap onFrame2; // alignment input
private Bitmap onFrame3; // char input
+ String beforePlate = "0";
+
// 모델 정의
DHDetectionModel detectionModel;
AlignmentModel alignmentModel;
@@ -356,18 +359,32 @@ public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
double fps = Math.round(((1.0/(end-start))*1000*100.0))/100.0;
String infer_result = fps + " fps";
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- try {
- tvTime.setText(infer_result);
- textView.setText(result2);
- imageView.setImageBitmap(onFrame3);
- } catch (Exception e) {
- e.printStackTrace();
+ if(result2.equals(beforePlate)){}
+ else {
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ tvTime.setText(infer_result);
+ textView.setText(result2);
+ imageView.setImageBitmap(onFrame3);
+ beforePlate = result2;
+ saveImg(onFrame3, result2);
+ DBHelper dbHelper = new DBHelper(MainActivity.this, 1);
+ //String checkDB = connectDB.connectionDB(result2);
+
+ if(dbHelper.getResult(result2)) {
+ Toast.makeText(MainActivity.this, "exist", Toast.LENGTH_SHORT).show();
+ }else{
+ Toast.makeText(MainActivity.this, "no exist", Toast.LENGTH_SHORT).show();
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
- }
- });
+ });
+ }
}
else{
@@ -375,4 +392,46 @@ public void run() {
}
return matInput;
}
+
+ private void saveImg(Bitmap bitmap, String textview) {
+
+ try {
+ //저장할 파일 경로
+ File storageDir = new File(getFilesDir() + "/capture");
+ if (!storageDir.exists()) //폴더가 없으면 생성.
+ storageDir.mkdirs();
+
+ String filename = textView.getText().toString() + ".jpg";
+
+ // 기존에 있다면 삭제
+ File file = new File(storageDir, filename);
+ boolean deleted = file.delete();
+ Log.d("TAG", "Delete Dup Check : " + deleted);
+ FileOutputStream output = null;
+
+ try {
+ output = new FileOutputStream(file);
+ //BitmapDrawable drawable = (BitmapDrawable) ivCapture.getDrawable();
+ //Bitmap bitmap = drawable.getBitmap();
+ bitmap.compress(Bitmap.CompressFormat.JPEG, 70, output); //해상도에 맞추어 Compress
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ assert output != null;
+ output.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ Log.d("TAG", "Captured Saved");
+ Toast.makeText(this, "Capture Saved ", Toast.LENGTH_SHORT).show();
+ } catch (Exception e) {
+ Log.d("TAG", "Capture Saving Error!", e);
+ Toast.makeText(this, "Save failed", Toast.LENGTH_SHORT).show();
+
+ }
+ }
+
}
\ No newline at end of file
diff --git a/opencv/build/intermediates/cxx/create_cxx_tasks_30_timing.txt b/opencv/build/intermediates/cxx/create_cxx_tasks_30_timing.txt
new file mode 100644
index 0000000..f349c8d
--- /dev/null
+++ b/opencv/build/intermediates/cxx/create_cxx_tasks_30_timing.txt
@@ -0,0 +1,9 @@
+# C/C++ build system timings
+create_cxx_tasks
+ create-initial-cxx-model
+ create-module-model 16ms
+ create-ARM64_V8A-model 10ms
+ [gap of 25ms]
+ create-initial-cxx-model completed in 54ms
+create_cxx_tasks completed in 54ms
+
diff --git a/opencv/build/intermediates/cxx/ndk_locator_record_366m712u.json b/opencv/build/intermediates/cxx/ndk_locator_record_366m712u.json
new file mode 100644
index 0000000..07f4723
--- /dev/null
+++ b/opencv/build/intermediates/cxx/ndk_locator_record_366m712u.json
@@ -0,0 +1,11 @@
+{
+ "ndk": "C:\\CookAndroid\\SDK\\ndk\\23.1.7779620",
+ "revision": {
+ "mMajor": 23,
+ "mMinor": 1,
+ "mMicro": 7779620,
+ "mPreview": 0,
+ "mPrecision": "MICRO",
+ "mPreviewSeparator": " "
+ }
+}
\ No newline at end of file
diff --git a/opencv/build/intermediates/cxx/ndk_locator_record_366m712u.log b/opencv/build/intermediates/cxx/ndk_locator_record_366m712u.log
new file mode 100644
index 0000000..2d6c285
--- /dev/null
+++ b/opencv/build/intermediates/cxx/ndk_locator_record_366m712u.log
@@ -0,0 +1,86 @@
+[
+ {
+ "level_": 0,
+ "message_": "android.ndkVersion from module build.gradle is [not set]",
+ "file_": "",
+ "tag_": "",
+ "diagnosticCode_": 0,
+ "memoizedIsInitialized": 1,
+ "unknownFields": {
+ "fields": {},
+ "fieldsDescending": {}
+ },
+ "memoizedSize": -1,
+ "memoizedHashCode": 2084317329
+ },
+ {
+ "level_": 0,
+ "message_": "android.ndkPath from module build.gradle is not set",
+ "file_": "",
+ "tag_": "",
+ "diagnosticCode_": 0,
+ "memoizedIsInitialized": 1,
+ "unknownFields": {
+ "fields": {},
+ "fieldsDescending": {}
+ },
+ "memoizedSize": -1,
+ "memoizedHashCode": -1418461864
+ },
+ {
+ "level_": 0,
+ "message_": "ndk.dir in local.properties is not set",
+ "file_": "",
+ "tag_": "",
+ "diagnosticCode_": 0,
+ "memoizedIsInitialized": 1,
+ "unknownFields": {
+ "fields": {},
+ "fieldsDescending": {}
+ },
+ "memoizedSize": -1,
+ "memoizedHashCode": -714000671
+ },
+ {
+ "level_": 0,
+ "message_": "Not considering ANDROID_NDK_HOME because support was removed after deprecation period.",
+ "file_": "",
+ "tag_": "",
+ "diagnosticCode_": 0,
+ "memoizedIsInitialized": 1,
+ "unknownFields": {
+ "fields": {},
+ "fieldsDescending": {}
+ },
+ "memoizedSize": -1,
+ "memoizedHashCode": 1148813399
+ },
+ {
+ "level_": 0,
+ "message_": "sdkFolder is C:\\CookAndroid\\SDK",
+ "file_": "",
+ "tag_": "",
+ "diagnosticCode_": 0,
+ "memoizedIsInitialized": 1,
+ "unknownFields": {
+ "fields": {},
+ "fieldsDescending": {}
+ },
+ "memoizedSize": -1,
+ "memoizedHashCode": -1616183371
+ },
+ {
+ "level_": 0,
+ "message_": "Because no explicit NDK was requested, the default version [23.1.7779620] for this Android Gradle Plugin will be used",
+ "file_": "",
+ "tag_": "",
+ "diagnosticCode_": 0,
+ "memoizedIsInitialized": 1,
+ "unknownFields": {
+ "fields": {},
+ "fieldsDescending": {}
+ },
+ "memoizedSize": -1,
+ "memoizedHashCode": 2082435688
+ }
+]
\ No newline at end of file
diff --git a/opencv/build/intermediates/cxx/ndk_locator_record_366m712u_key.json b/opencv/build/intermediates/cxx/ndk_locator_record_366m712u_key.json
new file mode 100644
index 0000000..468afde
--- /dev/null
+++ b/opencv/build/intermediates/cxx/ndk_locator_record_366m712u_key.json
@@ -0,0 +1,6 @@
+{
+ "sdkFolder": "C:\\CookAndroid\\SDK",
+ "sideBySideNdkFolderNames": [
+ "23.1.7779620"
+ ]
+}
\ No newline at end of file