Ver código fonte

更新拷贝构造函数

leon 4 semanas atrás
pai
commit
9fa0f0b664

+ 7 - 3
src/common/data.hpp

@@ -6,8 +6,10 @@
 #include <map>
 #include <iostream>
 #include <memory>
+#include "opencv2/opencv.hpp"
 #include "common/check.hpp"
 
+
 namespace data
 {
 
@@ -68,10 +70,12 @@ struct Box
         : left(left), top(top), right(right), bottom(bottom), score(score), class_id(class_id), label(label) {}
     Box(const Box& b) : 
         left(b.left), top(b.top), right(b.right), bottom(b.bottom), score(b.score), 
-        class_id(b.class_id), label(b.label), keypoints(b.keypoints) {}
-    Box(const Box&& b) : 
+        class_id(b.class_id), label(b.label), keypoints(b.keypoints), 
+        seg_mask(b.seg_mask.clone()) {}
+    Box(Box&& b) noexcept : 
         left(b.left), top(b.top), right(b.right), bottom(b.bottom), score(b.score), 
-        class_id(b.class_id), label(b.label), keypoints(b.keypoints) {}
+        class_id(b.class_id), label(std::move(b.label)), keypoints(std::move(b.keypoints)), 
+        seg_mask(std::move(b.seg_mask)) {}
     Box& operator=(const Box& b)
     {
         left = b.left;

+ 1 - 1
src/infer/trt/yolo/yolo.cu

@@ -764,7 +764,7 @@ Result YoloModelImpl::forwards(void *stream)
             else if (model_type_ == ModelType::YOLO11SEG)
             {
                 auto seg = decode_segment(imemory, pbox, stream);
-                result_object_box.seg_mask = cv::Mat mask(seg->height, seg->width, CV_8UC1, seg->data);
+                result_object_box.seg_mask = cv::Mat(seg->height, seg->width, CV_8UC1, seg->data);
             }
             
             result.emplace_back(result_object_box);

+ 1 - 1
src/nodes/draw/drawNode.cpp

@@ -122,7 +122,7 @@ void DrawNode::handle_data(std::shared_ptr<meta::MetaData>& meta_data)
         
         cv::putText(image, text, cv::Point(x, y), cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(b, g, r), 2);
 
-        if (box.seg_mask)
+        if (!box.seg_mask.empty())
         {
             overlay_mask(image, box.seg_mask, box.left, box.top, cv::Scalar(b, g, r), 0.6);
         }

+ 1 - 0
src/nodes/infer/inferNode.cpp

@@ -37,6 +37,7 @@ void InferNode::handle_data(std::shared_ptr<meta::MetaData>& meta_data)
         auto result = std::get<data::BoxArray>(det_result);
         for (auto& r : result)
         {
+            std::cout << r.seg_mask.size() << std::endl;
             meta_data->boxes.push_back(r);
         }
     }