Эх сурвалжийг харах

定义算法接口:根据给定特征点计算目标信息。

Ulric 1 долоо хоног өмнө
parent
commit
493ffcfc1a

+ 15 - 3
app/src/main/java/com/ys/imageProcess/cv/Process.java

@@ -20,14 +20,26 @@ public class Process {
     }
 
     /**
+     * 设别图像中的目标信息
+     *
      * @param bitmap 图像
-     * @param um 比例尺长度 (um)
-     * @param posX 文字左上角 x 坐标
-     * @param posY 文字左上角 y 坐标
+     * @param um     比例尺长度 (um)
+     * @param posX   文字左上角 x 坐标
+     * @param posY   文字左上角 y 坐标
      * @return 识别结果
      */
     public native DetectResult Detect(Bitmap bitmap, int um, int posX, int posY);
 
+
+    /**
+     * 根据给定的目标特征点集,更新目标信息
+     * @param fullContour 给定的轮廓数组
+     * @param midContour 给定的中线数组
+     * @param widthContour 给定的宽线数组
+     * @return 更新后的目标信息
+     */
+    public native DetectResult Update(double[] fullContour, double[] midContour, double[] widthContour);
+
     static {
         System.loadLibrary("ImageProcJni");
     }

+ 1 - 3
app/src/main/java/com/ys/imageProcess/viewModel/WorkViewModel.kt

@@ -298,13 +298,11 @@ class WorkViewModel : ViewModel() {
     }
 
     fun onDrag(position: Offset) {
-
-        //        Log.i(TAG, "drag $position")
-
         // 开始拖动
         if (dragStartPos == null) {
             dragStartPos = position
 
+            // 编辑模式下,开始拖动时,检查有没有目标上的点被
             if (imageState.value.editMode) {
                 val (pathIndex, pointIndex) = findVertexAt(position)
                 isEditingVertex = pathIndex >= 0 && pointIndex >= 0

+ 12 - 0
app/src/main/jni/src/process.cpp

@@ -194,3 +194,15 @@ Java_com_ys_imageProcess_cv_Process_Detect(JNIEnv *env, jobject thiz, jobject bi
     return jresult;
 }
 }
+
+extern "C"
+JNIEXPORT jobject JNICALL
+Java_com_ys_imageProcess_cv_Process_Update(JNIEnv *env, jobject thiz, jdoubleArray full_contour,
+                                           jdoubleArray mid_contour, jdoubleArray width_contour) {
+    // TODO: implement Update()
+    jclass dr_cls = env->FindClass("com/ys/imageProcess/cv/Process$DetectResult");
+    jobject jresult = env->AllocObject(dr_cls);
+    jsize length = env->GetArrayLength(full_contour);
+
+    return jresult;
+}