diff --git a/app/src/main/cpp/yolo.cpp b/app/src/main/cpp/yolo.cpp index 2eadf0d..e59f22b 100644 --- a/app/src/main/cpp/yolo.cpp +++ b/app/src/main/cpp/yolo.cpp @@ -866,40 +866,42 @@ } int Yolo::draw(cv::Mat &rgb, const std::vector &objects) { - int color_index = 0; + if (j_state == 3) { + int color_index = 0; - for (const auto &obj: objects) { - const unsigned char *color = colors[color_index % 19]; + for (const auto &obj: objects) { + const unsigned char *color = colors[color_index % 19]; - color_index++; + color_index++; - cv::Scalar cc(color[0], color[1], color[2]); + cv::Scalar cc(color[0], color[1], color[2]); - cv::rectangle(rgb, obj.rect, cc, 2); + cv::rectangle(rgb, obj.rect, cc, 2); - char text[64]; - sprintf(text, "%s", class_names[obj.label]); + char text[64]; + sprintf(text, "%s", class_names[obj.label]); - int baseLine = 0; - cv::Size label_size = cv::getTextSize(text, cv::FONT_HERSHEY_SIMPLEX, 0.5, 1, - &baseLine); + int baseLine = 0; + cv::Size label_size = cv::getTextSize(text, cv::FONT_HERSHEY_SIMPLEX, 0.5, 1, + &baseLine); - int x = obj.rect.x; - int y = obj.rect.y - label_size.height - baseLine; - if (y < 0) - y = 0; - if (x + label_size.width > rgb.cols) - x = rgb.cols - label_size.width; + int x = obj.rect.x; + int y = obj.rect.y - label_size.height - baseLine; + if (y < 0) + y = 0; + if (x + label_size.width > rgb.cols) + x = rgb.cols - label_size.width; - cv::Point org = cv::Point(x, y + label_size.height); + cv::Point org = cv::Point(x, y + label_size.height); - cv::Rect rc = cv::getTextSize(rgb.size(), text, org, chinese_font, 8); - cv::rectangle(rgb, rc, cc, -1); + cv::Rect rc = cv::getTextSize(rgb.size(), text, org, chinese_font, 8); + cv::rectangle(rgb, rc, cc, -1); - cv::Scalar text_scalar = (color[0] + color[1] + color[2] >= 381) - ? cv::Scalar(0, 0, 0) - : cv::Scalar(255, 255, 255); - cv::putText(rgb, text, org, text_scalar, chinese_font, 8); + cv::Scalar text_scalar = (color[0] + color[1] + color[2] >= 381) + ? cv::Scalar(0, 0, 0) + : cv::Scalar(255, 255, 255); + cv::putText(rgb, text, org, text_scalar, chinese_font, 8); + } } return 0; } diff --git a/app/src/main/cpp/yolo.cpp b/app/src/main/cpp/yolo.cpp index 2eadf0d..e59f22b 100644 --- a/app/src/main/cpp/yolo.cpp +++ b/app/src/main/cpp/yolo.cpp @@ -866,40 +866,42 @@ } int Yolo::draw(cv::Mat &rgb, const std::vector &objects) { - int color_index = 0; + if (j_state == 3) { + int color_index = 0; - for (const auto &obj: objects) { - const unsigned char *color = colors[color_index % 19]; + for (const auto &obj: objects) { + const unsigned char *color = colors[color_index % 19]; - color_index++; + color_index++; - cv::Scalar cc(color[0], color[1], color[2]); + cv::Scalar cc(color[0], color[1], color[2]); - cv::rectangle(rgb, obj.rect, cc, 2); + cv::rectangle(rgb, obj.rect, cc, 2); - char text[64]; - sprintf(text, "%s", class_names[obj.label]); + char text[64]; + sprintf(text, "%s", class_names[obj.label]); - int baseLine = 0; - cv::Size label_size = cv::getTextSize(text, cv::FONT_HERSHEY_SIMPLEX, 0.5, 1, - &baseLine); + int baseLine = 0; + cv::Size label_size = cv::getTextSize(text, cv::FONT_HERSHEY_SIMPLEX, 0.5, 1, + &baseLine); - int x = obj.rect.x; - int y = obj.rect.y - label_size.height - baseLine; - if (y < 0) - y = 0; - if (x + label_size.width > rgb.cols) - x = rgb.cols - label_size.width; + int x = obj.rect.x; + int y = obj.rect.y - label_size.height - baseLine; + if (y < 0) + y = 0; + if (x + label_size.width > rgb.cols) + x = rgb.cols - label_size.width; - cv::Point org = cv::Point(x, y + label_size.height); + cv::Point org = cv::Point(x, y + label_size.height); - cv::Rect rc = cv::getTextSize(rgb.size(), text, org, chinese_font, 8); - cv::rectangle(rgb, rc, cc, -1); + cv::Rect rc = cv::getTextSize(rgb.size(), text, org, chinese_font, 8); + cv::rectangle(rgb, rc, cc, -1); - cv::Scalar text_scalar = (color[0] + color[1] + color[2] >= 381) - ? cv::Scalar(0, 0, 0) - : cv::Scalar(255, 255, 255); - cv::putText(rgb, text, org, text_scalar, chinese_font, 8); + cv::Scalar text_scalar = (color[0] + color[1] + color[2] >= 381) + ? cv::Scalar(0, 0, 0) + : cv::Scalar(255, 255, 255); + cv::putText(rgb, text, org, text_scalar, chinese_font, 8); + } } return 0; } diff --git a/app/src/main/cpp/yolov8ncnn.cpp b/app/src/main/cpp/yolov8ncnn.cpp index 2a2b977..0ab6e6e 100644 --- a/app/src/main/cpp/yolov8ncnn.cpp +++ b/app/src/main/cpp/yolov8ncnn.cpp @@ -56,57 +56,6 @@ return 0; } -static int draw_fps(cv::Mat &rgb) { - // resolve moving average - double avg_fps = 0.f; - { - static double t0 = 0.f; - static double fps_history[10] = {0.f}; - - double t1 = ncnn::get_current_time(); - if (t0 == 0.f) { - t0 = t1; - return 0; - } - - double fps = 1000.f / (t1 - t0); - t0 = t1; - - for (int i = 9; i >= 1; i--) { - fps_history[i] = fps_history[i - 1]; - } - fps_history[0] = fps; - - if (fps_history[9] == 0.f) { - return 0; - } - - for (double i: fps_history) { - avg_fps += i; - } - avg_fps /= 10.f; - } - - char text[32]; - sprintf(text, "FPS=%.2f", avg_fps); - - int baseLine = 0; - cv::Size label_size = cv::getTextSize(text, cv::FONT_HERSHEY_SIMPLEX, 0.5, 1, &baseLine); - - int y = 0; - int x = rgb.cols - label_size.width; - - cv::rectangle(rgb, - cv::Rect(cv::Point(x, y), - cv::Size(label_size.width, label_size.height + baseLine)), - cv::Scalar(255, 255, 255), -1); - - cv::putText(rgb, text, cv::Point(x, y + label_size.height), - cv::FONT_HERSHEY_SIMPLEX, 0.5, cv::Scalar(0, 0, 0)); - - return 0; -} - static Yolo *g_yolo = nullptr; static ncnn::Mutex lock; static JavaVM *javaVM = nullptr; diff --git a/app/src/main/cpp/yolo.cpp b/app/src/main/cpp/yolo.cpp index 2eadf0d..e59f22b 100644 --- a/app/src/main/cpp/yolo.cpp +++ b/app/src/main/cpp/yolo.cpp @@ -866,40 +866,42 @@ } int Yolo::draw(cv::Mat &rgb, const std::vector &objects) { - int color_index = 0; + if (j_state == 3) { + int color_index = 0; - for (const auto &obj: objects) { - const unsigned char *color = colors[color_index % 19]; + for (const auto &obj: objects) { + const unsigned char *color = colors[color_index % 19]; - color_index++; + color_index++; - cv::Scalar cc(color[0], color[1], color[2]); + cv::Scalar cc(color[0], color[1], color[2]); - cv::rectangle(rgb, obj.rect, cc, 2); + cv::rectangle(rgb, obj.rect, cc, 2); - char text[64]; - sprintf(text, "%s", class_names[obj.label]); + char text[64]; + sprintf(text, "%s", class_names[obj.label]); - int baseLine = 0; - cv::Size label_size = cv::getTextSize(text, cv::FONT_HERSHEY_SIMPLEX, 0.5, 1, - &baseLine); + int baseLine = 0; + cv::Size label_size = cv::getTextSize(text, cv::FONT_HERSHEY_SIMPLEX, 0.5, 1, + &baseLine); - int x = obj.rect.x; - int y = obj.rect.y - label_size.height - baseLine; - if (y < 0) - y = 0; - if (x + label_size.width > rgb.cols) - x = rgb.cols - label_size.width; + int x = obj.rect.x; + int y = obj.rect.y - label_size.height - baseLine; + if (y < 0) + y = 0; + if (x + label_size.width > rgb.cols) + x = rgb.cols - label_size.width; - cv::Point org = cv::Point(x, y + label_size.height); + cv::Point org = cv::Point(x, y + label_size.height); - cv::Rect rc = cv::getTextSize(rgb.size(), text, org, chinese_font, 8); - cv::rectangle(rgb, rc, cc, -1); + cv::Rect rc = cv::getTextSize(rgb.size(), text, org, chinese_font, 8); + cv::rectangle(rgb, rc, cc, -1); - cv::Scalar text_scalar = (color[0] + color[1] + color[2] >= 381) - ? cv::Scalar(0, 0, 0) - : cv::Scalar(255, 255, 255); - cv::putText(rgb, text, org, text_scalar, chinese_font, 8); + cv::Scalar text_scalar = (color[0] + color[1] + color[2] >= 381) + ? cv::Scalar(0, 0, 0) + : cv::Scalar(255, 255, 255); + cv::putText(rgb, text, org, text_scalar, chinese_font, 8); + } } return 0; } diff --git a/app/src/main/cpp/yolov8ncnn.cpp b/app/src/main/cpp/yolov8ncnn.cpp index 2a2b977..0ab6e6e 100644 --- a/app/src/main/cpp/yolov8ncnn.cpp +++ b/app/src/main/cpp/yolov8ncnn.cpp @@ -56,57 +56,6 @@ return 0; } -static int draw_fps(cv::Mat &rgb) { - // resolve moving average - double avg_fps = 0.f; - { - static double t0 = 0.f; - static double fps_history[10] = {0.f}; - - double t1 = ncnn::get_current_time(); - if (t0 == 0.f) { - t0 = t1; - return 0; - } - - double fps = 1000.f / (t1 - t0); - t0 = t1; - - for (int i = 9; i >= 1; i--) { - fps_history[i] = fps_history[i - 1]; - } - fps_history[0] = fps; - - if (fps_history[9] == 0.f) { - return 0; - } - - for (double i: fps_history) { - avg_fps += i; - } - avg_fps /= 10.f; - } - - char text[32]; - sprintf(text, "FPS=%.2f", avg_fps); - - int baseLine = 0; - cv::Size label_size = cv::getTextSize(text, cv::FONT_HERSHEY_SIMPLEX, 0.5, 1, &baseLine); - - int y = 0; - int x = rgb.cols - label_size.width; - - cv::rectangle(rgb, - cv::Rect(cv::Point(x, y), - cv::Size(label_size.width, label_size.height + baseLine)), - cv::Scalar(255, 255, 255), -1); - - cv::putText(rgb, text, cv::Point(x, y + label_size.height), - cv::FONT_HERSHEY_SIMPLEX, 0.5, cv::Scalar(0, 0, 0)); - - return 0; -} - static Yolo *g_yolo = nullptr; static ncnn::Mutex lock; static JavaVM *javaVM = nullptr; diff --git a/app/src/main/java/com/casic/br/app/fragment/TargetCheckManifestFragment.kt b/app/src/main/java/com/casic/br/app/fragment/TargetCheckManifestFragment.kt index bee407c..39351c6 100644 --- a/app/src/main/java/com/casic/br/app/fragment/TargetCheckManifestFragment.kt +++ b/app/src/main/java/com/casic/br/app/fragment/TargetCheckManifestFragment.kt @@ -10,9 +10,11 @@ import com.casic.br.app.model.TargetCheckManifestModel import com.casic.br.app.vm.CheckManifestViewModel import com.casic.br.app.vm.ConfigViewModel +import com.casic.br.app.widgets.CheckStandardSheet import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show class TargetCheckManifestFragment( private val scene: String, private val target: String @@ -64,11 +66,26 @@ viewHolder.setText(R.id.troubleIndexView, "${position + 1}、") .setText(R.id.troubleNameView, item.checkStandard) .setOnClickListener(R.id.showImageView) { + if (item.basisList.isEmpty()) { + "抱歉,此项行业标准暂时无数据".show(requireContext()) + return@setOnClickListener + } + + val stringBuilder = StringBuilder() + item.basisList.forEachIndexed { index, base -> + val line = "《${base.specificationName}》-${base.chapter}-${base.content}" + if (index == item.basisList.size - 1) { + stringBuilder.append(line) + } else { + stringBuilder.append(line).append("\r\n") + } + } + //显示行业标准 -// CheckStandardSheet.Builder() -// .setContext(requireContext()) -// .setSheetValue(item.basisList) -// .build().show() + CheckStandardSheet.Builder() + .setContext(requireContext()) + .setSheetValue(stringBuilder.toString()) + .build().show() } } } diff --git a/app/src/main/cpp/yolo.cpp b/app/src/main/cpp/yolo.cpp index 2eadf0d..e59f22b 100644 --- a/app/src/main/cpp/yolo.cpp +++ b/app/src/main/cpp/yolo.cpp @@ -866,40 +866,42 @@ } int Yolo::draw(cv::Mat &rgb, const std::vector &objects) { - int color_index = 0; + if (j_state == 3) { + int color_index = 0; - for (const auto &obj: objects) { - const unsigned char *color = colors[color_index % 19]; + for (const auto &obj: objects) { + const unsigned char *color = colors[color_index % 19]; - color_index++; + color_index++; - cv::Scalar cc(color[0], color[1], color[2]); + cv::Scalar cc(color[0], color[1], color[2]); - cv::rectangle(rgb, obj.rect, cc, 2); + cv::rectangle(rgb, obj.rect, cc, 2); - char text[64]; - sprintf(text, "%s", class_names[obj.label]); + char text[64]; + sprintf(text, "%s", class_names[obj.label]); - int baseLine = 0; - cv::Size label_size = cv::getTextSize(text, cv::FONT_HERSHEY_SIMPLEX, 0.5, 1, - &baseLine); + int baseLine = 0; + cv::Size label_size = cv::getTextSize(text, cv::FONT_HERSHEY_SIMPLEX, 0.5, 1, + &baseLine); - int x = obj.rect.x; - int y = obj.rect.y - label_size.height - baseLine; - if (y < 0) - y = 0; - if (x + label_size.width > rgb.cols) - x = rgb.cols - label_size.width; + int x = obj.rect.x; + int y = obj.rect.y - label_size.height - baseLine; + if (y < 0) + y = 0; + if (x + label_size.width > rgb.cols) + x = rgb.cols - label_size.width; - cv::Point org = cv::Point(x, y + label_size.height); + cv::Point org = cv::Point(x, y + label_size.height); - cv::Rect rc = cv::getTextSize(rgb.size(), text, org, chinese_font, 8); - cv::rectangle(rgb, rc, cc, -1); + cv::Rect rc = cv::getTextSize(rgb.size(), text, org, chinese_font, 8); + cv::rectangle(rgb, rc, cc, -1); - cv::Scalar text_scalar = (color[0] + color[1] + color[2] >= 381) - ? cv::Scalar(0, 0, 0) - : cv::Scalar(255, 255, 255); - cv::putText(rgb, text, org, text_scalar, chinese_font, 8); + cv::Scalar text_scalar = (color[0] + color[1] + color[2] >= 381) + ? cv::Scalar(0, 0, 0) + : cv::Scalar(255, 255, 255); + cv::putText(rgb, text, org, text_scalar, chinese_font, 8); + } } return 0; } diff --git a/app/src/main/cpp/yolov8ncnn.cpp b/app/src/main/cpp/yolov8ncnn.cpp index 2a2b977..0ab6e6e 100644 --- a/app/src/main/cpp/yolov8ncnn.cpp +++ b/app/src/main/cpp/yolov8ncnn.cpp @@ -56,57 +56,6 @@ return 0; } -static int draw_fps(cv::Mat &rgb) { - // resolve moving average - double avg_fps = 0.f; - { - static double t0 = 0.f; - static double fps_history[10] = {0.f}; - - double t1 = ncnn::get_current_time(); - if (t0 == 0.f) { - t0 = t1; - return 0; - } - - double fps = 1000.f / (t1 - t0); - t0 = t1; - - for (int i = 9; i >= 1; i--) { - fps_history[i] = fps_history[i - 1]; - } - fps_history[0] = fps; - - if (fps_history[9] == 0.f) { - return 0; - } - - for (double i: fps_history) { - avg_fps += i; - } - avg_fps /= 10.f; - } - - char text[32]; - sprintf(text, "FPS=%.2f", avg_fps); - - int baseLine = 0; - cv::Size label_size = cv::getTextSize(text, cv::FONT_HERSHEY_SIMPLEX, 0.5, 1, &baseLine); - - int y = 0; - int x = rgb.cols - label_size.width; - - cv::rectangle(rgb, - cv::Rect(cv::Point(x, y), - cv::Size(label_size.width, label_size.height + baseLine)), - cv::Scalar(255, 255, 255), -1); - - cv::putText(rgb, text, cv::Point(x, y + label_size.height), - cv::FONT_HERSHEY_SIMPLEX, 0.5, cv::Scalar(0, 0, 0)); - - return 0; -} - static Yolo *g_yolo = nullptr; static ncnn::Mutex lock; static JavaVM *javaVM = nullptr; diff --git a/app/src/main/java/com/casic/br/app/fragment/TargetCheckManifestFragment.kt b/app/src/main/java/com/casic/br/app/fragment/TargetCheckManifestFragment.kt index bee407c..39351c6 100644 --- a/app/src/main/java/com/casic/br/app/fragment/TargetCheckManifestFragment.kt +++ b/app/src/main/java/com/casic/br/app/fragment/TargetCheckManifestFragment.kt @@ -10,9 +10,11 @@ import com.casic.br.app.model.TargetCheckManifestModel import com.casic.br.app.vm.CheckManifestViewModel import com.casic.br.app.vm.ConfigViewModel +import com.casic.br.app.widgets.CheckStandardSheet import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show class TargetCheckManifestFragment( private val scene: String, private val target: String @@ -64,11 +66,26 @@ viewHolder.setText(R.id.troubleIndexView, "${position + 1}、") .setText(R.id.troubleNameView, item.checkStandard) .setOnClickListener(R.id.showImageView) { + if (item.basisList.isEmpty()) { + "抱歉,此项行业标准暂时无数据".show(requireContext()) + return@setOnClickListener + } + + val stringBuilder = StringBuilder() + item.basisList.forEachIndexed { index, base -> + val line = "《${base.specificationName}》-${base.chapter}-${base.content}" + if (index == item.basisList.size - 1) { + stringBuilder.append(line) + } else { + stringBuilder.append(line).append("\r\n") + } + } + //显示行业标准 -// CheckStandardSheet.Builder() -// .setContext(requireContext()) -// .setSheetValue(item.basisList) -// .build().show() + CheckStandardSheet.Builder() + .setContext(requireContext()) + .setSheetValue(stringBuilder.toString()) + .build().show() } } } diff --git a/app/src/main/java/com/casic/br/app/model/TargetCheckManifestModel.java b/app/src/main/java/com/casic/br/app/model/TargetCheckManifestModel.java index 1f4a839..7ac5d91 100644 --- a/app/src/main/java/com/casic/br/app/model/TargetCheckManifestModel.java +++ b/app/src/main/java/com/casic/br/app/model/TargetCheckManifestModel.java @@ -42,7 +42,7 @@ } public static class DataModel { - private List basisList; + private List basisList; private String checkItem; private String checkMethod; private String checkObject; @@ -52,6 +52,7 @@ private String createUserId; private String createUserName; private String id; + private int num; private String remark; private String scene; private String sceneName; @@ -61,11 +62,11 @@ private String updateUserId; private String updateUserName; - public List getBasisList() { + public List getBasisList() { return basisList; } - public void setBasisList(List basisList) { + public void setBasisList(List basisList) { this.basisList = basisList; } @@ -141,6 +142,14 @@ this.id = id; } + public int getNum() { + return num; + } + + public void setNum(int num) { + this.num = num; + } + public String getRemark() { return remark; } @@ -204,5 +213,125 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class BasisListModel { + private String alarmMenuId; + private String chapter; + private String content; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String specificationId; + private String specificationItemId; + private String specificationName; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getChapter() { + return chapter; + } + + public void setChapter(String chapter) { + this.chapter = chapter; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getSpecificationId() { + return specificationId; + } + + public void setSpecificationId(String specificationId) { + this.specificationId = specificationId; + } + + public String getSpecificationItemId() { + return specificationItemId; + } + + public void setSpecificationItemId(String specificationItemId) { + this.specificationItemId = specificationItemId; + } + + public String getSpecificationName() { + return specificationName; + } + + public void setSpecificationName(String specificationName) { + this.specificationName = specificationName; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } }