56 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
		
		
			
		
	
	
			56 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
|  | #ifndef TRTX_YOLOV5_UTILS_H_
 | ||
|  | #define TRTX_YOLOV5_UTILS_H_
 | ||
|  | 
 | ||
|  | #include <dirent.h>
 | ||
|  | #include <opencv2/opencv.hpp>
 | ||
|  | 
 | ||
|  | //使用CV进行图像预处理
 | ||
|  | static inline 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)));    //中心贴图
 | ||
|  |     re.copyTo(out(cv::Rect(0, 0, re.cols, re.rows)));   //左上顶点贴图
 | ||
|  |     return out; | ||
|  | } | ||
|  | 
 | ||
|  | //从指定文件夹中读取文件
 | ||
|  | static inline int read_files_in_dir(const char *p_dir_name, std::vector<std::string> &file_names) { | ||
|  |     DIR *p_dir = opendir(p_dir_name); | ||
|  |     if (p_dir == nullptr) { | ||
|  |         return -1; | ||
|  |     } | ||
|  | 
 | ||
|  |     struct dirent* p_file = nullptr; | ||
|  |     while ((p_file = readdir(p_dir)) != nullptr) { | ||
|  |         if (strcmp(p_file->d_name, ".") != 0 && | ||
|  |             strcmp(p_file->d_name, "..") != 0) { | ||
|  |             //std::string cur_file_name(p_dir_name);
 | ||
|  |             //cur_file_name += "/";
 | ||
|  |             //cur_file_name += p_file->d_name;
 | ||
|  |             std::string cur_file_name(p_file->d_name); | ||
|  |             file_names.push_back(cur_file_name); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     closedir(p_dir); | ||
|  |     return 0; | ||
|  | } | ||
|  | 
 | ||
|  | #endif  // TRTX_YOLOV5_UTILS_H_
 | ||
|  | 
 |