ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c++ 图像尺寸不失真调整

2021-12-27 18:00:54  阅读:163  来源: 互联网

标签:Mat img 失真 re 416 c++ 图像 INPUT cv


原始图片尺寸:744*496

输入416*416 网络,图片尺寸失真调整:

 输入416*416 网络,图片尺寸不失真调整:

 c++ 代码:

#include <iostream>  
#include <vector>
#include <opencv2/opencv.hpp>
using namespace cv;

static const int INPUT_H = 416;
static const int INPUT_W = 416;

cv::Mat preprocess_img(cv::Mat& img) {
	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_CUBIC);
	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(int argc, char** argv) {

	cv::Mat img = cv::imread("1.jpg");
	cv::Mat direct_img;
	cv::resize(img,direct_img,Size(416,416));
	cv::Mat pr_img = preprocess_img(img);
	imshow("不失真", pr_img);
	imshow("失真", direct_img);
	waitKey(0);
	return 0;

}

总结:在目标检测中,图像预处理往往都需要做图像不失真尺寸调整。

标签:Mat,img,失真,re,416,c++,图像,INPUT,cv
来源: https://blog.csdn.net/ze1336365763/article/details/122177212

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有