#python #numpy #cv2
#python #numpy #cv2
Вопрос:
приведенная ниже программа разбивает изображение rgb на отдельные цветовые каналы
import cv2
import numpy as np
img = cv2.imread('dog_backpack.jpg')
cv2.imshow('RGB COLOR',img)
cv2.waitKey(0)
B,G,R = cv2.split(img)
zero = np.zeros(img.shape[0:2],dtype="uint8")
cv2.imshow('RED',cv2.merge([zero,zero,R]))
cv2.waitKey(0)
cv2.imshow('GREEN',cv2.merge([zero,G,zero]))
cv2.waitKey(0)
cv2.imshow('BLUE',cv2.merge([B,zero,zero]))
cv2.waitKey(0)
cv2.destroyAllWindows()
в строке 7, когда я использую функцию np.zeros с любым типом данных int, она выдает ошибку, но когда я использую ее с uint8, она работает правильно.
пожалуйста, объясните
Ответ №1:
По умолчанию cv2.imread
изображение будет загружаться с помощью np.uint8
, если вы не измените флаг.
Вы также можете написать так:
np.zeros(img.shape[:2], dtype=img.dtype)
Комментарии:
1. значит, это в основном означает, что они оба должны иметь один и тот же тип данных??
2. @YatinKumar да