图片来自网上截取,如有侵权,请联系我删除!!!
(一)图像非形变操作
>>>>>>Python代码:
import os import cv2 import numpy as np import time # 非形变图像处理函数 def letterbox(img,height = 416,augment = False, color = (127.5,127.5,127.5)): # Resize a rectangular image to a padded square shape = img.shape[:2] # shape = [height,width] ratio = float(height) / max(shape) # ratio = old / new 得到缩放比例 new_shape = (round(shape[1] * ratio),round(shape[0] * ratio)) dw = (height - new_shape[0]) / 2 # width padding dh = (height - new_shape[1]) / 2 # height padding top,bottom = round(dh - 0.1),round(dh + 0.1) left,right = round(dw - 0.1),round(dw + 0.1) # resize img if augment: # 数据增强 interpolation = np.random.choice([None,cv2.INTER_NEAREST,cv2.INTER_LINEAR, None,cv2.INTER_NEAREST,cv2.INTER_LINEAR, cv2.INTER_AREA,cv2.INTER_CUBIC,cv2.INTER_LANCZOS4]) if interpolation is None: img = cv2.resize(img,new_shape) else: img = cv2.resize(img,new_shape,interpolation = interpolation) else: img = cv2.resize(img,new_shape,interpolation=cv2.INTER_NEAREST) # print("resize time:",time.time()-s1) img = cv2.copyMakeBorder(img,top,bottom,left,right,cv2.BORDER_CONSTANT,value = color) # padded square return img,ratio,dw,dh if __name__ == '__main__': path = './images/' # 图片路径 img_size = 416 # 生成非形变图像的最终的尺寸,长和宽都是相等的 for f_ in os.listdir(path):# 遍历文件夹中的图片 img_o = cv2.imread(path+f_) # 加载图片文件 img,_,_,_ = letterbox(img_o,height=img_size) # 非形变图像处理 print("------------------->>>>") print("img_o shape:",img_o.shape) print("img shape:",img.shape) cv2.namedWindow("img_o",0) # 图像窗口的申明,参数: 窗口的尺寸可以通过鼠标去拉取改变,参数1:则固定为原尺寸,不可改变 cv2.imshow("img_o",img_o) cv2.namedWindow("img",0) cv2.imshow("img",img) cv2.waitKey(0)
实验效果:
原图 补边图
原图 补边图
(二)图像归一化:
img = img/255.
如果您喜欢我的分享,就点个赞??+收藏,这也是我努力更新文章的动力!!!!!