با استفاده از الگوریتم زیر:
cv::Rect fitOnSizeCorrect(const cv::Size& src, const cv::Size& dst,float& scale) {
float s_a = (float)dst.width / src.width;
float s_b = (float)dst.height / src.height;
cv::Size size_a,size_b;
size_a.width = src.width * s_a;
size_a.height = src.height * s_a;
size_b.width = src.width * s_b;
size_b.height = src.height * s_b;
cv::Size dst_size;
if (size_a.width <= dst.width && size_a.height <= dst.height) {
dst_size = size_a;
scale = s_a;
}
else if (size_b.width <= dst.width && size_b.height <= dst.height) {
dst_size = size_b;
scale = s_b;
}
cv::Rect result(cv::Point(0, 0), dst_size);
result.x = (dst.width - dst_size.width) / 2;
result.y = (dst.height - dst_size.height) / 2;
return result;
}