Как скопировать изображение с нескольких каналов? - PullRequest
0 голосов
/ 09 июня 2019

Я работаю с opencv2 через Python. Я пытаюсь скопировать изображение в формате YCrCb, но оно только копирует канал Cb

Я проверил количество каналов, напечатав форму скопированного изображения, это все еще 3 канала, это только цвета только Cb

img = cv.imread('C:\\Users\\Anon\\Pictures\\CV\\IMAG1227\\pryramid_4.bmp')

print(img.shape)
for x in range(0, 2):
    img = cv.pyrDown(img)

YCrCb_img = cv.cvtColor(img, cv.COLOR_BGR2YCrCb)


height, width, channel = YCrCb_img.shape

print(YCrCb_img.shape)

copy = YCrCb_img.copy()
    print(copy.shape)

cv.imwrite('C:\\Users\\Anon\\Pictures\\CV\\IMAG1227\\YCr_CB_copyTest.bmp', copy)

Полученное изображение выглядит так же, как изображение Cb на изображении ниже i

Форма возвращается

print(YCrCb_img.shape) => (300, 400, 3)

print(copy.shape) => (300, 400, 3)

1 Ответ

0 голосов
/ 18 июня 2019

Для доступа к отдельному каналу используйте функцию cv2.split ()

как здесь

YCrCb_img = cv.cvtColor(img, cv.COLOR_BGR2YCrCb)
y,cr,cb = cv.split(YCrCb_img)

теперь проверяйте форму y, cr, cb отдельно, вы получите результат, как и предполагаете, если я не ошибаюсь.

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