Другая длина массива, когда cv2.imread получает cv2.IMREAD_GRAYSCALE в качестве аргумента - PullRequest
0 голосов
/ 25 ноября 2018
Training_Data=[]
IMG_SIZE=100

def build():
    Directory="D:\projects\Machine_learning\Dog_Cat\PetImages"
    CATEGORY=["Cat","Dog"]
    for category in CATEGORY:
        path=os.path.join(Directory,category)
        class_num=CATEGORIES.index(category)
        for img in tqdm(os.listdir(path)):
            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:
               pass

Когда я не передаю cv2.IMREAD_GRAYSCALE, он дает другую длину массива:

img_array=cv2.imread(os.path.join(path,img))

X = 74598

Y = 24886

Почему в training_data добавляется элемент в 3 раза больше, когда cv2.IMREAD_GRAYSCALE не используется?

1 Ответ

0 голосов
/ 25 ноября 2018

По умолчанию, когда вы не передаете cv2.IMREAD_GRAYSCALE в качестве аргумента, cv2.imread будет читать ваше изображение с тремя каналами (оно будет загружать ваше изображение как RGB).Когда вы передаете cv2.IMREAD_GRAYSCALE в качестве аргумента, ваше количество бит на пиксель меняется (вам потребуется только 1 * 8 бит на пиксель вместо 3 * 8).

Если хотите, вы можете проверитьваше изображение глубина и каналы с использованием функций depth() и channels(), это может помочь вам лучше понять, что происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...