Посмотрите на сообщение об ошибке очень внимательно. Мало того, что тип массива NumPy должен быть CV_64F
или плавающей точкой, высота должна быть 1 или 4. Для вашего конкретного случая это означает, что вы должны предоставить двумерный массив NumPy с высотой 1 По умолчанию ваш созданный массив имеет тип int32
, поэтому убедитесь, что вы указали dtype
как np.float
.
Наконец, вы можете просто ввести в скаляр одну строку, которая поможет вам сделать это:
output = cv2.absdiff(image, np.array([190, 119, 102], dtype=np.float)[None])
Этот код np.array([190, 119, 102], dtype=np.float)[None]
создает обычный массив NumPy, но обеспечивает точность с плавающей запятой, и мы вводим одноэлементное измерение, поэтому он становится массивом 1 x 3
2D NumPy, а не массивом 3,
NumPy.
В качестве заключительной мысли вы можете просто предоставить 2D-список вместо 1D-списка в конструкторе массива NumPy для достижения того же результата. Это зависит от того, как вы создаете скаляр:
output = cv2.absdiff(image, np.array([[190, 119, 102]], dtype=np.float))