From 6de6ef8bf877af9a60b21e335549d763adf5d091 Mon Sep 17 00:00:00 2001 From: SaiD Date: Tue, 25 Nov 2025 23:06:17 +0530 Subject: [PATCH] Distance and collect images auto --- .idea/vcs.xml | 6 + .../example/animalrating/CameraProcessor.kt | 194 ++++++++--------- .../example/animalrating/FrameProcessor.kt | 197 ++++++++++++++++-- .../com/example/animalrating/HomeActivity.kt | 66 +++++- app/src/main/res/layout/activity_home.xml | 60 +++++- app/src/main/res/layout/activity_main.xml | 8 - 6 files changed, 402 insertions(+), 129 deletions(-) create mode 100644 .idea/vcs.xml diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/animalrating/CameraProcessor.kt b/app/src/main/java/com/example/animalrating/CameraProcessor.kt index fd57a73..ab91cb4 100644 --- a/app/src/main/java/com/example/animalrating/CameraProcessor.kt +++ b/app/src/main/java/com/example/animalrating/CameraProcessor.kt @@ -1,14 +1,17 @@ package com.example.animalrating import android.Manifest +import android.content.ContentValues import android.content.pm.ActivityInfo import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.Color import android.graphics.Matrix +import android.os.Build import android.os.Bundle +import android.provider.MediaStore import android.util.Log -import android.widget.Button +import android.util.Size import android.widget.ImageView import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts @@ -23,6 +26,7 @@ import androidx.core.content.ContextCompat import com.example.animalrating.ml.CowAnalyzer import com.example.animalrating.ui.SilhouetteOverlay import java.io.File +import java.io.FileInputStream import java.io.FileOutputStream import java.util.concurrent.Executors @@ -41,6 +45,9 @@ class CameraProcessor : AppCompatActivity(), CowAnalyzer.CowListener { private var orientation: String? = null private var currentMask: Bitmap? = null private var savedMaskBitmap: Bitmap? = null + private var isPhotoTaken = false + private var matchThreshold = 75 + private var algorithm = HomeActivity.ALGORITHM_HAMMING override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -49,6 +56,11 @@ class CameraProcessor : AppCompatActivity(), CowAnalyzer.CowListener { cowName = intent.getStringExtra("COW_NAME") orientation = intent.getStringExtra("ORIENTATION") + // Load settings + val prefs = getSharedPreferences("AnimalRatingPrefs", MODE_PRIVATE) + matchThreshold = prefs.getInt("THRESHOLD", 75) + algorithm = prefs.getString("ALGORITHM", HomeActivity.ALGORITHM_HAMMING) ?: HomeActivity.ALGORITHM_HAMMING + // Set orientation based on selected view if (orientation == "front" || orientation == "back") { requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT @@ -61,33 +73,7 @@ class CameraProcessor : AppCompatActivity(), CowAnalyzer.CowListener { segmentationOverlay = findViewById(R.id.segmentationOverlay) savedMaskOverlay = findViewById(R.id.savedMaskOverlay) - frameProcessor = FrameProcessor { maskBitmap -> - runOnUiThread { - if (maskBitmap != null && (orientation == "front" || orientation == "back")) { - try { - val matrix = Matrix() - matrix.postRotate(90f) - val rotatedBitmap = Bitmap.createBitmap( - maskBitmap, 0, 0, maskBitmap.width, maskBitmap.height, matrix, true - ) - currentMask = rotatedBitmap - segmentationOverlay.setImageBitmap(rotatedBitmap) - } catch (e: Exception) { - Log.e("CameraProcessor", "Error rotating mask", e) - currentMask = maskBitmap - segmentationOverlay.setImageBitmap(maskBitmap) - } - } else { - currentMask = maskBitmap - segmentationOverlay.setImageBitmap(maskBitmap) - } - } - } - - val btnSave = findViewById