自定义保持图片宽高比例的resize函数
创作时间:
作者:
@小白创作中心
自定义保持图片宽高比例的resize函数
引用
CSDN
1.
https://blog.csdn.net/m0_57142352/article/details/140048200
在深度学习中,在将图片输入模型之前,一般会进行resize操作,如果直接使用cv2.resize(img,size)函数,可能会导致图片变形,从而引起模型推理错误,需要自定义一个能够保持图片宽高比例的resize函数
代码
def make_image(frame, img_size):
img = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
img = ratio_preserving_resize(img, img_size)
return img
def ratio_preserving_resize(image, img_size):
# ratio preserving resize
img_h, img_w = image.shape
scale_h = img_size[1] / img_h
scale_w = img_size[0] / img_w
scale_max = max(scale_h, scale_w)
new_size = (int(img_w * scale_max), int(img_h * scale_max))
image = cv2.resize(image, new_size, interpolation=cv2.INTER_LINEAR)
# pad the image if necessary
pad_height = math.ceil(max(0, img_size[1]-new_size[1])/2)
pad_width = math.ceil(max(0, img_size[0]-new_size[0])/2)
padded_image = cv2.copyMakeBorder(image, pad_height, pad_height, pad_width, pad_width, cv2.BORDER_CONSTANT,value=(0,0,0) )
# center crop
x = padded_image.shape[1] // 2 - img_size[0] // 2
y = padded_image.shape[0] // 2 - img_size[1] // 2
image = padded_image[y:y + img_size[1], x:x + img_size[0]]
return image
测试结果
输入的图片:
1、使用opencv提供的resize函数
img_raw = cv2.imread("./001.png")
img_size = (640, 480)
img = cv2.cvtColor(img_raw, cv2.COLOR_BGR2GRAY)
img = cv2.resize(img,img_size)
win_name = 'Test Resize'
cv2.namedWindow(win_name, cv2.WINDOW_FREERATIO)
while(True):
cv2.imshow(win_name, img)
key = cv2.waitKey(delay=1)
if key == ord('q'):
print('Quitting, \'q\' pressed.')
break
cv2.destroyAllWindows()
2、使用自定义的 ratio_preserving_resize函数
img_raw = cv2.imread("./001.png")
img_size = (640, 480)
img = make_image(img_raw.copy(), img_size)
win_name = 'Test Ratio Preserving Resize'
cv2.namedWindow(win_name, cv2.WINDOW_FREERATIO)
while(True):
cv2.imshow(win_name, img)
key = cv2.waitKey(delay=1)
if key == ord('q'):
print('Quitting, \'q\' pressed.')
break
cv2.destroyAllWindows()
热门推荐
“漱”对了治病,“漱”错了致病!你真的会用漱口水吗?
四川盐源县举办泸沽湖转山转海活动 摩梭+非遗展现更多盐源文化
探秘薄荷的神奇功效:你所不知道的薄荷力量
辟谷减肥餐的危害
商家销售假货如何向法院起诉是什么民事按件
知识产权律师事务所需具备哪些技能和知识
简历被刷?这样向HR询问原因最有效
雷军不堪其扰,张文宏多次向平台投诉!AI合成音视频,合理使用边界在哪儿?
《精灵宝可梦》进化史:历代作品梳理与对比
十大相机种类盘点 发烧友需知道的十类主流相机
技术团队如何统一技术栈?
抵押物能否直接以物抵债?
汽油车配备48V轻混系统是什么概念?
多模态+GNN,2025这个创新思路必将爆发!
MOS管的实际应用和正确用法你知道吗?
温医大眼视光团队新突破:40赫兹闪光可促进睡眠并缓解脑部疾病
什么是会厌囊肿
当古人发现了节气与花期的联系……中式浪漫藏不住了
湖南省人民医院哪个院区更好
《哪吒2》幕后的山东制作团队 制作敖光的龙牙刀用了一年半
银河麒麟操作系统V10详细安装教程
纳兰性德与《木兰词》:古典词意的现代诠释与深情体悟
如何建立具有成长性的会员激励体系?
为何顺治帝只活到了24岁?看看他的生活状态,能活24岁已是奇迹
假性胬肉会越长越大吗
领失业金需要带什么材料?信阳失业保险金办理材料一览
近期好书推荐:每本都值得一读!
普通女生必学的7个夏日穿搭技巧,简单衣服也能穿出洋气感
深耕六十载,催化云朵变雨滴
胃肿瘤标志物有哪些