在深度学习中,模型的输入size通常是正方形尺寸的,比如300 x 300这样.直接resize的话,会把图像拉的变形.通常我们希望resize以后仍然保持图片的宽高比.
成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、成都网站制作、外贸网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的察隅网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!例如:
如果直接resize到的话:
而我们希望得到:
可以利用copyMakeBorder和resize配合达到我们的目的.
import cv2 def resize_keep_aspectratio(image_src,dst_size): src_h,src_w = image_src.shape[:2] print(src_h,src_w) dst_h,dst_w = dst_size #判断应该按哪个边做等比缩放 h = dst_w * (float(src_h)/src_w)#按照w做等比缩放 w = dst_h * (float(src_w)/src_h)#按照h做等比缩放 h = int(h) w = int(w) if h <= dst_h: image_dst = cv2.resize(image_src,(dst_w,int(h))) else: image_dst = cv2.resize(image_src,(int(w),dst_h)) h_,w_ = image_dst.shape[:2] print(h_,w_) top = int((dst_h - h_) / 2); down = int((dst_h - h_+1) / 2); left = int((dst_w - w_) / 2); right = int((dst_w - w_+1) / 2); value = [0,0,0] borderType = cv2.BORDER_CONSTANT print(top, down, left, right) image_dst = cv2.copyMakeBorder(image_dst, top, down, left, right, borderType, None, value) return image_dst image_src = cv2.imread("/home/sc/disk/data/bdd-data/bdd_data/bdd100k/images/10k/train/0a0a0b1a-7c39d841.jpg") dst_size = (720,720) image = resize_keep_aspectratio(image_src,dst_size) cv2.imshow("aaa",image) print(image.shape) if 27 == cv2.waitKey(): cv2.destroyAllWindows()
分享文章:opencvresize图片为正方形尺寸的实现方法-创新互联
网页路径:https://www.cdcxhl.com/article22/ddgpcc.html
成都网站建设公司_创新互联,为您提供定制开发、标签优化、品牌网站制作、动态网站、App开发、自适应网站
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联