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)