int minHW = min(img.rows, img.cols);
float ratio = max(_input_height, _input_width) / (float)minHW;
int newH = max(_input_height, (int)(img.rows * ratio));
int newW = max(_input_width, (int)(img.cols * ratio));
cv::resize(img, img, cv::Size(newW, newH));
int x = (int)max(0.0, std::floor((newW - _input_width)/2.));
int y = (int)max(0.0, std::floor((newH - _input_height)/2.));
cv::Rect roi = cv::Rect(x, y, _input_width, _input_height);//x y width height
imgCrop = img(roi);
上图中_input_width和_input_height为目标图片大小
在图片进入模型前我们通常需要将图片缩放到固定大小,上面的代码是将图片的短边缩放到目标大小,所以图片画面有可能会不全,有裁剪的过程。