前面是模块的代码,后面是主程序的代码,为什么最终运行会出现AttributeError: 'numpy.ndarray' object has no attribute 'create_img'的错误呢?怎么会没有这个方法呢

import numpy as np
from keras.engine.saving import load_model
from matplotlib import cm as c
from keras.models import model_from_json

In[3]:

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,你检查下版本是否正确