Преобразование градаций серого в RGB - PullRequest
0 голосов
/ 28 марта 2019

Как я могу решить эту ошибку?

import matplotlib, cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread('C:/Users/xxx/Desktop/image.jpg') 
img = np.array(img, dtype=np.uint8)
plt.imshow(cv2.cvtColor(img, cv2.COLOR_GRAY2RGB))

Ошибка: OpenCV (4.0.0) c: \ projects \ opencv-python \ opencv \ modules \ imgproc \ src \ color.hpp: 259: ошибка: (-2: неопределенная ошибка) в функции '__cdecl cv :: CvtHelper, struct cv :: Set <3,4, -1>, struct cv :: Set <0,2,5>, 2>:: CvtHelper (константный класс cv :: _ InputArray &, константный класс cv :: _ OutputArray &, int) '

Недопустимое количество каналов во входном изображении:' VScn :: contains (scn) ', где«scn» - 3

Ответы [ 2 ]

1 голос
/ 28 марта 2019
img = cv2.imread(filename[, flags])

возвращает 3-канальное цветное изображение, когда флаг> 0

возвращает серое изображение, когда флаг = 0

возвращает изображение в том виде, в котором загруженный файл изначально имеет значение.

Вы получили ошибку, потому что вы не назначили ее для возврата серого изображения.И номер канала не совпадает.

Используйте img = cv2.imread(filename, 0), чтобы убедиться, что img является 1-канальным изображением.

0 голосов
/ 28 марта 2019

Изображение, которое вы загружаете с помощью imread, содержит три канала в формате BGR. Однако cv2.cvtColor ожидает изображение только с одним каналом, поскольку вы передали параметр cv2.COLOR_GRAY2RGB (для изображений в градациях серого только один канал)

Если вам нужен RGB, рассмотрите возможность использования:

cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

...