[備忘] Image Data Process for Training Yolo
Image Data Process
資料夾內的圖片全部轉為 JPEG (on mac OS):
sips -s format JPEG *
使用 finder 功能,修改檔案副檔名
使用 openCV 做 image resize:
說明:
max_w_h_thresh 代表 max width/height threshold
如果圖片的最大邊(寬或高)超過 max_w_h_thresh 就把它等比例 resize 在 threshold 限制的大小之內。我目前設 1024 px 為最大邊限制
max_w_h_thresh 代表 max width/height threshold
如果圖片的最大邊(寬或高)超過 max_w_h_thresh 就把它等比例 resize 在 threshold 限制的大小之內。我目前設 1024 px 為最大邊限制
max_w_h_thresh = 1024.0
def resize_my_input(image, max_w_h_thresh):
h, w = image.shape[:2]
if (max(h , w) < max_w_h_thresh):
return image
elif (h > w):
print(float(max_w_h_thresh/h))
small_img = cv2.resize(image, None, fx=float(max_w_h_thresh/h), fy=float(max_w_h_thresh/h))
elif (w >= h):
print(float(max_w_h_thresh/w))
small_img = cv2.resize(image, None, fx=float(max_w_h_thresh/w), fy=float(max_w_h_thresh/w)) # 要注意 1024.0 才是 float
return small_img
走訪資料夾裡面的圖片檔案做 resize
import os
import cv2
## 資料夾名稱放在 argv[1]
image_folder = sys.argv[1]
for dirPath, dirNames, fileNames in os.walk(image_folder):
# print(dirPath)
for f in fileNames:
if f[-3:] == 'jpg': # 篩選 jpg 檔
fname = os.path.join(dirPath, f)
print(fname)
img = cv2.imread(fname)
img = resize_my_input(img, max_w_h_thresh)
# 存檔
cv2.imwrite(fname[:-4]+'_small.JPEG', img)
留言
張貼留言