путаница в numpy типах данных

#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 да