客户要求的添加文字框,但是会超过图像区域,后来发现YOLOv5里有现成的逻辑
int baseLine = 0;
cv::Size label_size = cv::getTextSize(text, cv::FONT_HERSHEY_SIMPLEX, 2, 4, &baseLine);
int x = box.center.x -50;
int y = box.center.y - label_size.height - baseLine - 50;
if (y < 0)
y = 0;
if (x + label_size.width > res.cols)
x = res.cols - label_size.width;
cv::rectangle(res, cv::Rect(cv::Point(x, y), cv::Size(label_size.width, label_size.height + baseLine)),cv::Scalar(255, 255, 255), -1);
cv::putText(res, text, cv::Point(x, y + label_size.height),cv::FONT_HERSHEY_SIMPLEX, 2, cv::Scalar(0, 0, 0), 4);
主要思路就是限制中心点x和y的范围