实用脚本五:C++Opencv图像添加文字不超过图像区域

客户要求的添加文字框,但是会超过图像区域,后来发现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的范围

猜你喜欢

转载自blog.csdn.net/fisherisfish/article/details/132315461