From da684c8a7f814afded2dad22a5469745c7efe951 Mon Sep 17 00:00:00 2001 From: liusiyang Date: Wed, 2 Sep 2026 11:33:09 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E5=AF=B9=E9=BD=90=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E8=AF=BB=E5=8F=96=E9=98=B2=E5=BE=A1=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ConfigModule/include/CheckConfigDefine.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/ConfigModule/include/CheckConfigDefine.h b/ConfigModule/include/CheckConfigDefine.h index 64289dc..94c6536 100644 --- a/ConfigModule/include/CheckConfigDefine.h +++ b/ConfigModule/include/CheckConfigDefine.h @@ -1291,7 +1291,19 @@ struct Function_Image_Align { printf("pointArry1 == 0 \n\n\n"); } - feature_Mask = tem_feature_Mask(feature_Roi).clone(); + // 防御:feature_Roi 相对图像尺寸 img_W x img_H 可能越界, + // 越界会导致 cv::Mat(Mat, Rect) 断言失败并抛 cv::Exception,进而 abort。 + cv::Rect roi = feature_Roi & cv::Rect(0, 0, img_W, img_H); + if (roi.width <= 0 || roi.height <= 0) + { + printf("[ToMaskImg] WARNING feature_Roi (%d,%d,%d,%d) out of range, img %dx%d\n", + feature_Roi.x, feature_Roi.y, feature_Roi.width, feature_Roi.height, img_W, img_H); + feature_Mask = tem_feature_Mask.clone(); + } + else + { + feature_Mask = tem_feature_Mask(roi).clone(); + } } } void print(std::string str)