img = cv2.imread(filename[, flags])
возвращает 3-канальное цветное изображение, когда флаг> 0
возвращает серое изображение, когда флаг = 0
возвращает изображение в том виде, в котором загруженный файл изначально имеет значение.
Вы получили ошибку, потому что вы не назначили ее для возврата серого изображения.И номер канала не совпадает.
Используйте img = cv2.imread(filename, 0)
, чтобы убедиться, что img
является 1-канальным изображением.