Как исправить ошибку атрибута: объект ‘JpegImageFile’ не имеет атрибута ‘load_img’

#python #machine-learning #keras #computer-vision #keras-layer

#python #машинное обучение #keras #компьютерное зрение #keras-layer

Вопрос:

Я новичок, и я учусь кодировать классификатор изображений. Моя цель — создать функцию прогнозирования.

в этом проекте я хочу создать модель прогнозирования автомобиля, у меня проблема, когда я загружаю изображение из функции keras.preprocessing появляется ошибка JpegImageFile’объект не имеет атрибута ‘load_img’

это мой код

 from google.colab.patches import cv2_imshow
import cv2
import glob
from keras.preprocessing import image
import numpy as np
ambil = glob.glob("*.jpg")
for foto in ambil:
  lol = cv2.imread(foto)
  with open(foto, 'rb') as f:
    np_image_string = np.array([f.read()])
    image = Image.open(foto)
    width, height = image.size
    gambar_masuk = np.array(image.getdata()).reshape(height, width, 3).astype(np.uint8)

    num_detections, detection_boxes, detection_classes, detection_scores, detection_masks, image_info = session.run(
      ['NumDetections:0', 'DetectionBoxes:0', 'DetectionClasses:0', 'DetectionScores:0', 'DetectionMasks:0', 'ImageInfo:0'],
      feed_dict={'Placeholder:0': np_image_string})

    num_detections = np.squeeze(num_detections.astype(np.int32), axis=(0,))
    detection_boxes = np.squeeze(detection_boxes * image_info[0, 2], axis=(0,))[0:num_detections]
    detection_scores = np.squeeze(detection_scores, axis=(0,))[0:num_detections]
    detection_classes = np.squeeze(detection_classes.astype(np.int32), axis=(0,))[0:num_detections]
    detection_boxes = detection_boxes[detection_classes==3]
    detection_scores = detection_scores[detection_classes==3]
    detection_boxes = detection_boxes[detection_scores>0.8]
    detection_boxes = detection_boxes.astype(int)
    print(detection_boxes)
    urut=1
    for kotak in detection_boxes:
      hasil = lol[kotak[0]:kotak[2],kotak[1]:kotak[3],:]
      hasil_potong = 'hasil' str(urut) '.jpg'
      cv2.imwrite(hasil_potong, hasil)
      lihat = cv2.imread(hasil_potong)
      cv2_imshow(lihat)
      img = image.load_img(lihat, target_size = (size_, size_))
 

Ответ №1:

Вы перезаписываете image . У вас есть эти две строки:

 from keras.preprocessing import image
    :
    :
    image = Image.open(foto)
 

Вы импортируете image из keras.processing , но затем перезаписываете его во второй показанной строке.

Либо импортируйте image другим способом, либо используйте другое имя переменной для открытого изображения…

Комментарии:

1. чувак, ты прав, простая ошибка, из-за которой я не мог спать несколько дней, большое тебе спасибо.