import numpy as np
from keras.engine.saving import load_model
from matplotlib import cm as c
from keras.models import model_from_json
def load_model():
json_file = open('D:/models/Model.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json)
loaded_model.load_weights("D:/weights/model_A_weights.h5", by_name=True)
return loaded_model
class Inference:
def __init__(self, picture):
self.picture = picture
self.model = load_model()
def create_img(self):
im = self.picture.convert('RGB')
im = np.array(im)
im = im / 255.0
im[:, :, 0] = (im[:, :, 0] - 0.485) / 0.229
im[:, :, 1] = (im[:, :, 1] - 0.456) / 0.224
im[:, :, 2] = (im[:, :, 2] - 0.406) / 0.225
im = np.expand_dims(im, axis=0)
return im
def predict(self):
image = self.create_img()
ans = self.model.predict(image)
return ans
import cv2 as cv
import Inference
from Inference import Inference
cap = cv.VideoCapture("test.mp4")
fps = cap.get(cv.CAP_PROP_FPS)
size = (int(cap.get(cv.CAP_PROP_FRAME_WIDTH)),
int(cap.get(cv.CAP_PROP_FRAME_HEIGHT))) # 获取视频宽和高
wri = cv.VideoWriter(
"testoout.mp4", cv.VideoWriter_fourcc('m', 'p', '4', 'v'),
fps, size)
while True:
success, frame = cap.read()
if not success:
break
# wri.write(frame)
cv.imshow("title", frame)
crowdCounter = Inference(frame)
ans = Inference.predict(frame)
print(ans)
c = cv.waitKey(30)
break
cv.destroyAllWindows()
cap.release()
wri.release()
有没有这个属性,可以通过导航到定义查看,比如pycharm中,使用
from numpy import ndarray
光标定位到ndarray,按下ctrl键,再按下鼠标左键就可以定位到源码,我看了下ndarray确实没有create_img,版本是1.18.5,你检查下版本是否正确