luckfox_pico_rkmpi_examples/example/luckfox_pico_rtsp_yolov5/src/main.cc
cv::Mat letterbox(cv::Mat input)
{
float scaleX = (float)model_width / (float)width;
float scaleY = (float)model_height / (float)height;
scale = scaleX < scaleY ? scaleX : scaleY;
int inputWidth = (int)((float)width * scale);
int inputHeight = (int)((float)height * scale);
leftPadding = (model_width - inputWidth) / 2;
topPadding = (model_height - inputHeight) / 2;
cv::Mat inputScale;
cv::resize(input, inputScale, cv::Size(inputWidth,inputHeight), 0, 0, cv::INTER_LINEAR);
cv::Mat letterboxImage(640, 640, CV_8UC3,cv::Scalar(0, 0, 0));
cv::Rect roi(leftPadding, topPadding, inputWidth, inputHeight);
inputScale.copyTo(letterboxImage(roi));
return letterboxImage;
}
void mapCoordinates(int *x, int *y) {
int mx = *x - leftPadding;
int my = *y - topPadding;
*x = (int)((float)mx / scale);
*y = (int)((float)my / scale);
}
对于输入图像的处理情况,第一个个函数是将输入的图像更改为640*640,
第二个函数是将框框还原回去。