簡體   English   中英

使用 cv2 收集圖像數據時出現問題

[英]Problem when gathering image data with cv2

我正在嘗試使用 cv2 從一些貓和狗圖像中獲取圖像數據,用於 python 和 append 中的機器學習項目,將它們全部添加到training_data列表中。 但它只是在最后打印列表時打印None

起初我想也許我需要將數據轉換為 numpy 數組,但似乎沒有任何效果,我真的不明白出了什么問題。

CATEGORIES = ["Dog", "Cat"]     # 0=dog, 1=cat
IMG_SIZE = 50

training_data = []

def create_training_data():
    i = 0
    for category in CATEGORIES:
        path = os.path.join(DATADIR, category)  # path to cats or dogs dir
        class_num = CATEGORIES.index(category)
        for img in os.listdir(path):
            i += 1
            try:
                img_array = cv2.imread(os.path.join(path, img), cv2.IMREAD_GRAYSCALE)
                new_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE))
                training_data.append([new_array, class_num])
            except Exception as e:
                print("general exception", e, os.path.join(path, img))
            if i % 1000 == 0:
                print(i, '...')
    print('\n\nfinished...\n\n')

create_training_data()

training_data = random.shuffle(training_data)

print(training_data)

X = []
y = []

for features, label in training_data:
    X.append(features)
    y.append(label)

X = np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 1)

我認為這與調整大小有關,因為它引發了很多這樣的異常:

一般異常 OpenCV(4.1.1) C:...\opencv\modules\imgproc\src\resize.cpp:3720: error: (-215:Assertion failed).ssize:empty() in function:resizecv:resize ' D..../cats_and_dogs/PetImages\Cat\9565.jpg

它還打印此錯誤:

回溯(最近一次通話最后):

文件“D:/Python/tensorflow/tutorial/cats_and_dogs.py”,第 44 行,在功能中,label 在 training_data:TypeError:'NoneType' object 不可迭代

損壞的 JPEG 數據:標記 0xd9 之前的 399 個無關字節

損壞的 JPEG 數據:標記 0xd9 之前的 226 個無關字節

損壞的 JPEG 數據:標記 0xd9 之前的 162 個無關字節

警告:未知的 JFIF 修訂號 0.00

...

在研究了您的錯誤后,我發現這個線程可能與您遇到的問題有關。

簡而言之,該線程指出了 Oxford-IIIT 寵物數據集的問題。 在該數據集中,一些圖像以“.jpg”擴展名結尾,但實際上是“.png”。 驗證您從哪里獲得圖像。

看來您遇到了類似/相同的問題。 文件擴展名與實際圖像數據不匹配可能導致 openCV 無法正確讀取數據。

編輯:2019 年 10 月 14 日

此外, random.shuffle()就地運行,因此返回None training_data = random.shuffle(training_data)更改為random.shuffle(training_data)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM