代码:
- #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;
- }
结果: