代码:
#include <iostream>
#include "string"
#include "opencv2/opencv.hpp"cv::Mat preprocess_img(cv::Mat& img, int input_w,int input_h)
{int w,h,x,y;float r_w=input_w/(img.cols*1.0);float r_h=input_h/(img.rows*1.0);if(r_h>r_w){w=input_w;h=r_w*img.rows;x=0;y=(input_h-h)/2;}else{w=r_h*img.cols;h=input_h;x=(input_w-w)/2;y=0;}cv::Mat re(h,w,CV_8UC3);cv::resize(img,re,re.size(),0,0,cv::INTER_LINEAR);cv::Mat out(input_h,input_w,CV_8UC3,cv::Scalar(128,128,128));re.copyTo(out(cv::Rect(x,y,re.cols,re.rows)));return out;
}int main() {std::string imgDir="00058.jpg";cv::Mat img=cv::imread(imgDir);cv::Mat out= preprocess_img(img,640,640);
// cv::imshow("result",out);
// cv::imshow("test",img);cv::imwrite("letterbox.jpg",out);std::cout << "Hello, World!" << std::endl;cv::waitKey(0);return 0;
}
结果: