2 проблемы в приведенном выше коде:
1: Как я уже упоминал в своем комментарии, для рисования контуров требуется список контуров, поэтому оберните temp
в скобки, чтобы сделать его списком:
cc=cv2.drawContours(imagem,[temp],-1,(0,255,0),3)
2: кажется, что контуры рисования недовольны 64-разрядными числами с плавающей запятой (по умолчанию для numpy). Получение 32-битного int, похоже, работает для меня, как предложено здесь .
cc=cv2.drawContours(imagem,[temp.astype('i4')],-1,(0,255,0),3)
Весь рабочий код на моем P C:
import cv2
import numpy as np
temp=np.array([[284., 60.], [276., 59.], [269., 58.], [260., 58.], [247., 60.], [241., 65.], [237., 68.], [233., 72.], [228., 80.], [225., 87.], [225., 96.], [229., 107.], [233., 109.], [238., 110.], [244., 111.], [253., 112.], [260., 113.], [267., 115.], [273., 116.], [290., 115.], [298., 113.], [306., 110.], [313., 109.], [323., 108.], [330., 102.], [330., 100.], [335., 96.], [338., 94.], [344., 91.], [346., 86.], [346., 82.], [346., 77.], [346., 73.], [341., 70.], [337., 68.], [327., 64.], [322., 63.], [314., 62.], [305., 62.], [300., 61.], [293., 60.], [289., 60.]])
imagem = cv2.imread(r'c:\Users\username\Desktop\image.png', cv2.IMREAD_GRAYSCALE)
cc=cv2.drawContours(imagem,[temp.astype('i4')],-1,(255,0,0),3)
cv2.imshow('image',cc)
cv2.waitKey(0)