diff --git a/app/src/main/cpp/yolo.cpp b/app/src/main/cpp/yolo.cpp index abef1cd..10f6444 100644 --- a/app/src/main/cpp/yolo.cpp +++ b/app/src/main/cpp/yolo.cpp @@ -830,8 +830,8 @@ static const char *class_names[] = { "三脚架", "三通", "专用软管", "人", "切断阀", "危险告知牌", "压力测试仪", "压力表", "反光衣", "呼吸面罩", "喉箍", "四合一", "圆头水枪", "头", - "安全告知牌", "安全帽", "安全标识", "安全绳", "对讲机", "尖头水枪", "工服", - "开关", "报警装置", "接头", "施工路牌", "气体检测仪", "水带", "水带_矩形", + "安全告知牌", "安全帽", "安全标识", "安全绳", "对讲设备", "尖头水枪", "工服", + "开关", "报警装置", "接头", "施工路牌", "气体检测报警仪", "水带", "水带_矩形", "流量计", "消火栓箱", "灭火器", "灶台", "灶眼", "照明设备", "熄火保护", "电线暴露", "电路图", "警戒线", "调压器", "调长器", "贴纸", "跨电线", "路锥", "过滤器", "配电箱", "长柄阀门", "闪光灯亮", "闪光灯灭", "阀门", diff --git a/app/src/main/cpp/yolo.cpp b/app/src/main/cpp/yolo.cpp index abef1cd..10f6444 100644 --- a/app/src/main/cpp/yolo.cpp +++ b/app/src/main/cpp/yolo.cpp @@ -830,8 +830,8 @@ static const char *class_names[] = { "三脚架", "三通", "专用软管", "人", "切断阀", "危险告知牌", "压力测试仪", "压力表", "反光衣", "呼吸面罩", "喉箍", "四合一", "圆头水枪", "头", - "安全告知牌", "安全帽", "安全标识", "安全绳", "对讲机", "尖头水枪", "工服", - "开关", "报警装置", "接头", "施工路牌", "气体检测仪", "水带", "水带_矩形", + "安全告知牌", "安全帽", "安全标识", "安全绳", "对讲设备", "尖头水枪", "工服", + "开关", "报警装置", "接头", "施工路牌", "气体检测报警仪", "水带", "水带_矩形", "流量计", "消火栓箱", "灭火器", "灶台", "灶眼", "照明设备", "熄火保护", "电线暴露", "电路图", "警戒线", "调压器", "调长器", "贴纸", "跨电线", "路锥", "过滤器", "配电箱", "长柄阀门", "闪光灯亮", "闪光灯灭", "阀门", diff --git a/app/src/main/java/com/casic/br/app/extensions/String.kt b/app/src/main/java/com/casic/br/app/extensions/String.kt index cbf8779..a0dc716 100644 --- a/app/src/main/java/com/casic/br/app/extensions/String.kt +++ b/app/src/main/java/com/casic/br/app/extensions/String.kt @@ -41,20 +41,14 @@ } fun String.getSceneByTarget(): String { - val scene = if (LocaleConstant.DISTRIBUTION_BOX_SCENE_ARRAY.contains(this)) { - "配电箱" - } else if (LocaleConstant.PRESSURE_REGULATING_STATION_SCENE_ARRAY.contains(this)) { - "调压站" - } else if (LocaleConstant.FIRE_PROTECTION_SCENE_ARRAY.contains(this)) { - "建筑消防" - } else if (LocaleConstant.CONFINED_SPACES_SCENE_ARRAY.contains(this)) { - "有限空间作业" - } else if (LocaleConstant.NON_RESIDENTIAL_SCENE_ARRAY.contains(this)) { - "非居用户" - } else { - "未知场景" + when (this) { + in LocaleConstant.P_D_X_SCENE_ARRAY -> return "配电箱" + in LocaleConstant.T_Y_Z_SCENE_ARRAY -> return "调压站" + in LocaleConstant.J_Z_X_F_SCENE_ARRAY -> return "建筑消防" + in LocaleConstant.Y_X_K_J_Z_Y_SCENE_ARRAY -> return "有限空间作业" + in LocaleConstant.F_Z_M_SCENE_ARRAY -> return "非居用户" } - return scene + return "" } fun String.isInScene(scene: String): Boolean { diff --git a/app/src/main/cpp/yolo.cpp b/app/src/main/cpp/yolo.cpp index abef1cd..10f6444 100644 --- a/app/src/main/cpp/yolo.cpp +++ b/app/src/main/cpp/yolo.cpp @@ -830,8 +830,8 @@ static const char *class_names[] = { "三脚架", "三通", "专用软管", "人", "切断阀", "危险告知牌", "压力测试仪", "压力表", "反光衣", "呼吸面罩", "喉箍", "四合一", "圆头水枪", "头", - "安全告知牌", "安全帽", "安全标识", "安全绳", "对讲机", "尖头水枪", "工服", - "开关", "报警装置", "接头", "施工路牌", "气体检测仪", "水带", "水带_矩形", + "安全告知牌", "安全帽", "安全标识", "安全绳", "对讲设备", "尖头水枪", "工服", + "开关", "报警装置", "接头", "施工路牌", "气体检测报警仪", "水带", "水带_矩形", "流量计", "消火栓箱", "灭火器", "灶台", "灶眼", "照明设备", "熄火保护", "电线暴露", "电路图", "警戒线", "调压器", "调长器", "贴纸", "跨电线", "路锥", "过滤器", "配电箱", "长柄阀门", "闪光灯亮", "闪光灯灭", "阀门", diff --git a/app/src/main/java/com/casic/br/app/extensions/String.kt b/app/src/main/java/com/casic/br/app/extensions/String.kt index cbf8779..a0dc716 100644 --- a/app/src/main/java/com/casic/br/app/extensions/String.kt +++ b/app/src/main/java/com/casic/br/app/extensions/String.kt @@ -41,20 +41,14 @@ } fun String.getSceneByTarget(): String { - val scene = if (LocaleConstant.DISTRIBUTION_BOX_SCENE_ARRAY.contains(this)) { - "配电箱" - } else if (LocaleConstant.PRESSURE_REGULATING_STATION_SCENE_ARRAY.contains(this)) { - "调压站" - } else if (LocaleConstant.FIRE_PROTECTION_SCENE_ARRAY.contains(this)) { - "建筑消防" - } else if (LocaleConstant.CONFINED_SPACES_SCENE_ARRAY.contains(this)) { - "有限空间作业" - } else if (LocaleConstant.NON_RESIDENTIAL_SCENE_ARRAY.contains(this)) { - "非居用户" - } else { - "未知场景" + when (this) { + in LocaleConstant.P_D_X_SCENE_ARRAY -> return "配电箱" + in LocaleConstant.T_Y_Z_SCENE_ARRAY -> return "调压站" + in LocaleConstant.J_Z_X_F_SCENE_ARRAY -> return "建筑消防" + in LocaleConstant.Y_X_K_J_Z_Y_SCENE_ARRAY -> return "有限空间作业" + in LocaleConstant.F_Z_M_SCENE_ARRAY -> return "非居用户" } - return scene + return "" } fun String.isInScene(scene: String): Boolean { diff --git a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt index c3ae770..9aa83df 100644 --- a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt @@ -39,113 +39,45 @@ ) } - val CLASS_NAMES_ARRAY = arrayListOf( - "三脚架", - "三通", - "专用软管", - "人", - "切断阀", - "危险告知牌", - "压力测试仪", - "压力表", - "反光衣", - "呼吸面罩", - "喉箍", - "四合一", - "圆头水枪", - "头", - "安全告知牌", - "安全帽", - "安全标识", - "安全绳", - "对讲机", - "尖头水枪", - "工服", - "开关", - "报警装置", - "接头", - "施工路牌", - "气体检测仪", - "水带", - "水带_矩形", - "流量计", - "消火栓箱", - "灭火器", - "灶台", - "灶眼", - "照明设备", - "熄火保护", - "电线暴露", - "电路图", - "警戒线", - "调压器", - "调长器", - "贴纸", - "跨电线", - "路锥", - "过滤器", - "配电箱", - "长柄阀门", - "闪光灯亮", - "闪光灯灭", - "阀门", - "非专用软管", - "风管", - "鼓风机" + val TARGET_NAMES_ARRAY = arrayListOf( + "三脚架", "三通", "专用软管", "人", "切断阀", "危险告知牌", "压力测试仪", + "压力表", "反光衣", "呼吸面罩", "喉箍", "四合一", "圆头水枪", "头", + "安全告知牌", "安全帽", "安全标识", "安全绳", "对讲设备", "尖头水枪", "工服", + "开关", "报警装置", "接头", "施工路牌", "气体检测报警仪", "水带", "水带_矩形", + "流量计", "消火栓箱", "灭火器", "灶台", "灶眼", "照明设备", "熄火保护", + "电线暴露", "电路图", "警戒线", "调压器", "调长器", "贴纸", "跨电线", + "路锥", "过滤器", "配电箱", "长柄阀门", "闪光灯亮", "闪光灯灭", "阀门", + "非专用软管", "风管", "鼓风机" ) val SEGMENTATION_ARRAY = arrayOf("弯折", "断裂", "烧焦", "磨损", "铁锈", "龟裂") //配电箱 - val DISTRIBUTION_BOX_SCENE_ARRAY = arrayListOf( + val P_D_X_SCENE_ARRAY = arrayListOf( "安全标识", "电路图", "电线暴露", "跨电线", "配电箱", "贴纸", "开关" ) //调压站 - val PRESSURE_REGULATING_STATION_SCENE_ARRAY = arrayListOf( + val T_Y_Z_SCENE_ARRAY = arrayListOf( "调压器", "阀门", "压力表", "流量计", "过滤器", "调长器", "压力测试仪", "长柄阀门" ) //建筑消防 - val FIRE_PROTECTION_SCENE_ARRAY = arrayListOf( + val J_Z_X_F_SCENE_ARRAY = arrayListOf( "消火栓箱", "尖头水枪", "圆头水枪", "水带", "水带_矩形", "灭火器" ) //有限空间作业 - val CONFINED_SPACES_SCENE_ARRAY = arrayListOf( - "安全帽", - "呼吸面罩", - "施工路牌", - "安全告知牌", - "危险告知牌", - "警戒线", - "路锥", - "三脚架", - "对讲机", - "反光衣", - "照明设备", - "气体检测仪", - "安全绳" + val Y_X_K_J_Z_Y_SCENE_ARRAY = arrayListOf( + "安全帽", "呼吸面罩", "施工路牌", "安全告知牌", "危险告知牌", "警戒线", "路锥", + "三脚架", "对讲机", "反光衣", "照明设备", "气体检测仪", "安全绳" ) //非居 - val NON_RESIDENTIAL_SCENE_ARRAY = arrayListOf( - "三通", - "人", - "切断阀", - "喉箍", - "熄火保护", - "风管", - "软管", - "专用软管", - "非专用软管", - "报警装置", - "接头", - "调压器", - "阀门", - "压力表", - "流量计", - "过滤器" + val F_Z_M_SCENE_ARRAY = arrayListOf( + "三通", "人", "切断阀", "喉箍", "熄火保护", "风管", "软管", + "专用软管", "非专用软管", "报警装置", "接头", "调压器", "阀门", "压力表", + "流量计", "过滤器" ) /** @@ -165,6 +97,4 @@ const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:22003" - const val AI_SERVER_CONFIG = "aiServerConfig" - const val AI_BASE_URL = "http://139.198.181.132:5000" } \ No newline at end of file diff --git a/app/src/main/cpp/yolo.cpp b/app/src/main/cpp/yolo.cpp index abef1cd..10f6444 100644 --- a/app/src/main/cpp/yolo.cpp +++ b/app/src/main/cpp/yolo.cpp @@ -830,8 +830,8 @@ static const char *class_names[] = { "三脚架", "三通", "专用软管", "人", "切断阀", "危险告知牌", "压力测试仪", "压力表", "反光衣", "呼吸面罩", "喉箍", "四合一", "圆头水枪", "头", - "安全告知牌", "安全帽", "安全标识", "安全绳", "对讲机", "尖头水枪", "工服", - "开关", "报警装置", "接头", "施工路牌", "气体检测仪", "水带", "水带_矩形", + "安全告知牌", "安全帽", "安全标识", "安全绳", "对讲设备", "尖头水枪", "工服", + "开关", "报警装置", "接头", "施工路牌", "气体检测报警仪", "水带", "水带_矩形", "流量计", "消火栓箱", "灭火器", "灶台", "灶眼", "照明设备", "熄火保护", "电线暴露", "电路图", "警戒线", "调压器", "调长器", "贴纸", "跨电线", "路锥", "过滤器", "配电箱", "长柄阀门", "闪光灯亮", "闪光灯灭", "阀门", diff --git a/app/src/main/java/com/casic/br/app/extensions/String.kt b/app/src/main/java/com/casic/br/app/extensions/String.kt index cbf8779..a0dc716 100644 --- a/app/src/main/java/com/casic/br/app/extensions/String.kt +++ b/app/src/main/java/com/casic/br/app/extensions/String.kt @@ -41,20 +41,14 @@ } fun String.getSceneByTarget(): String { - val scene = if (LocaleConstant.DISTRIBUTION_BOX_SCENE_ARRAY.contains(this)) { - "配电箱" - } else if (LocaleConstant.PRESSURE_REGULATING_STATION_SCENE_ARRAY.contains(this)) { - "调压站" - } else if (LocaleConstant.FIRE_PROTECTION_SCENE_ARRAY.contains(this)) { - "建筑消防" - } else if (LocaleConstant.CONFINED_SPACES_SCENE_ARRAY.contains(this)) { - "有限空间作业" - } else if (LocaleConstant.NON_RESIDENTIAL_SCENE_ARRAY.contains(this)) { - "非居用户" - } else { - "未知场景" + when (this) { + in LocaleConstant.P_D_X_SCENE_ARRAY -> return "配电箱" + in LocaleConstant.T_Y_Z_SCENE_ARRAY -> return "调压站" + in LocaleConstant.J_Z_X_F_SCENE_ARRAY -> return "建筑消防" + in LocaleConstant.Y_X_K_J_Z_Y_SCENE_ARRAY -> return "有限空间作业" + in LocaleConstant.F_Z_M_SCENE_ARRAY -> return "非居用户" } - return scene + return "" } fun String.isInScene(scene: String): Boolean { diff --git a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt index c3ae770..9aa83df 100644 --- a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt @@ -39,113 +39,45 @@ ) } - val CLASS_NAMES_ARRAY = arrayListOf( - "三脚架", - "三通", - "专用软管", - "人", - "切断阀", - "危险告知牌", - "压力测试仪", - "压力表", - "反光衣", - "呼吸面罩", - "喉箍", - "四合一", - "圆头水枪", - "头", - "安全告知牌", - "安全帽", - "安全标识", - "安全绳", - "对讲机", - "尖头水枪", - "工服", - "开关", - "报警装置", - "接头", - "施工路牌", - "气体检测仪", - "水带", - "水带_矩形", - "流量计", - "消火栓箱", - "灭火器", - "灶台", - "灶眼", - "照明设备", - "熄火保护", - "电线暴露", - "电路图", - "警戒线", - "调压器", - "调长器", - "贴纸", - "跨电线", - "路锥", - "过滤器", - "配电箱", - "长柄阀门", - "闪光灯亮", - "闪光灯灭", - "阀门", - "非专用软管", - "风管", - "鼓风机" + val TARGET_NAMES_ARRAY = arrayListOf( + "三脚架", "三通", "专用软管", "人", "切断阀", "危险告知牌", "压力测试仪", + "压力表", "反光衣", "呼吸面罩", "喉箍", "四合一", "圆头水枪", "头", + "安全告知牌", "安全帽", "安全标识", "安全绳", "对讲设备", "尖头水枪", "工服", + "开关", "报警装置", "接头", "施工路牌", "气体检测报警仪", "水带", "水带_矩形", + "流量计", "消火栓箱", "灭火器", "灶台", "灶眼", "照明设备", "熄火保护", + "电线暴露", "电路图", "警戒线", "调压器", "调长器", "贴纸", "跨电线", + "路锥", "过滤器", "配电箱", "长柄阀门", "闪光灯亮", "闪光灯灭", "阀门", + "非专用软管", "风管", "鼓风机" ) val SEGMENTATION_ARRAY = arrayOf("弯折", "断裂", "烧焦", "磨损", "铁锈", "龟裂") //配电箱 - val DISTRIBUTION_BOX_SCENE_ARRAY = arrayListOf( + val P_D_X_SCENE_ARRAY = arrayListOf( "安全标识", "电路图", "电线暴露", "跨电线", "配电箱", "贴纸", "开关" ) //调压站 - val PRESSURE_REGULATING_STATION_SCENE_ARRAY = arrayListOf( + val T_Y_Z_SCENE_ARRAY = arrayListOf( "调压器", "阀门", "压力表", "流量计", "过滤器", "调长器", "压力测试仪", "长柄阀门" ) //建筑消防 - val FIRE_PROTECTION_SCENE_ARRAY = arrayListOf( + val J_Z_X_F_SCENE_ARRAY = arrayListOf( "消火栓箱", "尖头水枪", "圆头水枪", "水带", "水带_矩形", "灭火器" ) //有限空间作业 - val CONFINED_SPACES_SCENE_ARRAY = arrayListOf( - "安全帽", - "呼吸面罩", - "施工路牌", - "安全告知牌", - "危险告知牌", - "警戒线", - "路锥", - "三脚架", - "对讲机", - "反光衣", - "照明设备", - "气体检测仪", - "安全绳" + val Y_X_K_J_Z_Y_SCENE_ARRAY = arrayListOf( + "安全帽", "呼吸面罩", "施工路牌", "安全告知牌", "危险告知牌", "警戒线", "路锥", + "三脚架", "对讲机", "反光衣", "照明设备", "气体检测仪", "安全绳" ) //非居 - val NON_RESIDENTIAL_SCENE_ARRAY = arrayListOf( - "三通", - "人", - "切断阀", - "喉箍", - "熄火保护", - "风管", - "软管", - "专用软管", - "非专用软管", - "报警装置", - "接头", - "调压器", - "阀门", - "压力表", - "流量计", - "过滤器" + val F_Z_M_SCENE_ARRAY = arrayListOf( + "三通", "人", "切断阀", "喉箍", "熄火保护", "风管", "软管", + "专用软管", "非专用软管", "报警装置", "接头", "调压器", "阀门", "压力表", + "流量计", "过滤器" ) /** @@ -165,6 +97,4 @@ const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:22003" - const val AI_SERVER_CONFIG = "aiServerConfig" - const val AI_BASE_URL = "http://139.198.181.132:5000" } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/StartCheckByYoloActivity.kt b/app/src/main/java/com/casic/br/app/view/StartCheckByYoloActivity.kt index 3644a81..081d30f 100644 --- a/app/src/main/java/com/casic/br/app/view/StartCheckByYoloActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/StartCheckByYoloActivity.kt @@ -9,7 +9,6 @@ import android.view.SurfaceHolder import android.view.View import android.view.WindowManager -import androidx.activity.result.ActivityResultCallback import androidx.activity.result.contract.ActivityResultContracts import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope @@ -59,7 +58,6 @@ private val context = this private val locationManager by lazy { LocationManager(this) } private val targetSet by lazy { HashSet() } - private val detectedSceneSet by lazy { HashSet() } private val detectedTargetSet by lazy { HashSet() } private val yolov8ncnn by lazy { Yolov8ncnn() } private val mat by lazy { Mat() } @@ -72,7 +70,6 @@ private var inspectionAddress = "" private var mainDicModels: MutableList = ArrayList() private var isDetectTarget = false - private var detectedScene = "" private var alarmCode = "" override fun initOnCreate(savedInstanceState: Bundle?) { @@ -199,8 +196,7 @@ } 1 -> { - binding.titleView.setTitle("") - detectedScene = "" + binding.titleView.setTitle("场景识别中...") isDetectTarget = false "场景重置成功".show(context) } @@ -212,21 +208,20 @@ } private val selectSceneLauncher = registerForActivityResult( - ActivityResultContracts.StartActivityForResult(), ActivityResultCallback { - if (it.resultCode == RESULT_OK) { - val data = it.data ?: return@ActivityResultCallback - val sceneName = data.getStringExtra("sceneName").toString() - binding.titleView.setTitle(sceneName) - detectedScene = sceneName + ActivityResultContracts.StartActivityForResult() + ) { + if (it.resultCode == RESULT_OK) { + val sceneName = it.data?.getStringExtra("sceneName").toString() + binding.titleView.setTitle(sceneName) - //暂停算法 - yolov8ncnn.onPause() + //暂停算法 + yolov8ncnn.onPause() - isDetectTarget = true - //调用多模型 - yolov8ncnn.loadMultiModel(assets, intArrayOf(0, 1), false) - } - }) + isDetectTarget = true + //调用多模型 + yolov8ncnn.loadMultiModel(assets, intArrayOf(0, 1), false) + } + } private val stopTaskLauncher = registerForActivityResult( ActivityResultContracts.StartActivityForResult() @@ -279,7 +274,7 @@ runOnUiThread { detectResults.forEach { - val label = LocaleConstant.CLASS_NAMES_ARRAY[it.type] + val label = LocaleConstant.TARGET_NAMES_ARRAY[it.type] targetSet.add(label) binding.tipsTagView.visibility = View.VISIBLE binding.tipsTagView.text = "${targetSet.size}" @@ -313,12 +308,10 @@ return } - val firstYoloResult = output.first().toInt() //取结果的第一个为场景判断 - val label = LocaleConstant.CLASS_NAMES_ARRAY[firstYoloResult] + val label = LocaleConstant.TARGET_NAMES_ARRAY[output.first().toInt()] val scene = label.getSceneByTarget() - - if (scene == "未知场景") { + if (scene == "") { return } @@ -344,20 +337,17 @@ .setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { - RuntimeCache.sceneName = scene - detectedScene = scene - detectedSceneSet.add(scene) binding.titleView.setTitle(scene) //显示场景清单 binding.listTagView.visibility = View.VISIBLE - binding.listTagView.text = "${detectedSceneSet.size}" + RuntimeCache.sceneName = scene - //暂停算法 + //暂停单模型算法 yolov8ncnn.onPause() - isDetectTarget = true //调用多模型 yolov8ncnn.loadMultiModel(assets, intArrayOf(0, 1), false) + isDetectTarget = true } override fun onCancelClick() {