predict_preprocess.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import copy
  2. import random
  3. import numpy as np
  4. import math
  5. import cv2
  6. import numpy as np
  7. import math
  8. import torch
  9. import torch.nn as nn
  10. import torchvision.transforms as transforms
  11. import cv2
  12. import __main__
  13. import sys
  14. import os
  15. import time
  16. from app.utils.card_inference.data_augmentation import LetterBox
  17. def predict_preprocess(img_bgr, imgSize_train):
  18. device_str = torch.device("cuda" if torch.cuda.is_available() else "cpu")
  19. img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)
  20. letterBox = LetterBox(imgSize_train)
  21. img_rgb_letterbox = letterBox.handle_single_img(img_rgb)
  22. img_np = np.array(img_rgb_letterbox)
  23. imgTensor = torch.tensor(img_np, dtype=torch.float32, device=device_str)
  24. # 将所有元素值除以255,进行归一化
  25. imgTensor = imgTensor * (1/255.0)
  26. # 把形状从[H, W, C] 改为 [C, H, W]
  27. imgTensor_CHW = imgTensor.permute(2, 0, 1)
  28. normaliz_operate_c3 = transforms.Compose([
  29. transforms.Normalize(mean=(0, 0, 0), std=(1, 1, 1)),
  30. ])
  31. imgTensor_CHW_norm = normaliz_operate_c3(imgTensor_CHW)
  32. return imgTensor_CHW_norm