'TypeError: Скалярное значение для аргумента' color 'не равно цифре c' при использовании opencv- python при рисовании круга - PullRequest
2 голосов
/ 02 марта 2020

Я новичок в opencv. Некоторые странные вещи происходили, когда я рисовал круг. Он не работал, когда я пытался передать с2 в функцию круга, но он работал хорошо, когда я передаю с1 в аргумент цвета. Но c1 == c2 . Вот мой код:

import cv2
import numpy as np 

canvas = np.zeros((300, 300, 3), dtype='uint8')
for _ in range(1):
    r = np.random.randint(0, 200)
    center = np.random.randint(0, 300, size=(2, )) 
    color = np.random.randint(0, 255, size=(3, ))
    c1 = tuple(color.tolist())
    c2 = tuple(color)
    print('c1 == c2 : {} '.format(c1 == c2))
    cv2.circle(canvas, tuple(center), r, c2, thickness=-1)

cv2.imshow('Canvas', canvas)
cv2.waitKey(0)

когда я использую c2, консоль выдает: 'TypeError: Скалярное значение для аргумента' color 'не равно цифре c ', но почему это случилось, когда c1 == c2 ? Спасибо.

1 Ответ

0 голосов
/ 02 марта 2020
  • Преобразование типа данных int64 в int.
  • ndarray.tolist(): элементы данных преобразуются в ближайший совместимый встроенный тип Python через item функция.

Пример.

import cv2
import numpy as np 

canvas = np.zeros((300, 300, 3), dtype='uint8')
for _ in range(1):
    r = np.random.randint(0, 200)
    center = np.random.randint(0, 300, size=(2, )) 
    color = np.random.randint(0, 255, size=(3, ))

    #convert data types int64 to int
    color = ( int (color [ 0 ]), int (color [ 1 ]), int (color [ 2 ])) 
    cv2.circle(canvas, tuple(center), r, tuple (color), thickness=-1)


cv2.imshow('Canvas', canvas)
cv2.waitKey(0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...