Avertissement: énorme noob openCV
Traceback (dernier appel le plus récent):
Fichier "lanes2.py", ligne 22, en
canny = canny(lane_image)
Fichier "lanes2.py", ligne 5, en canny
gray = cv2.cvtColor(imgUMat, cv2.COLOR_RGB2GRAY)
TypeError: cv :: UMat attendu pour l'argument 'src'
À quoi fait exactement "src"?
src
est le premier argument de cv2.cvtColor
.
L'erreur que vous obtenez est parce que ce n'est pas le bon formulaire. cv2.Umat()
est fonctionnellement équivalent à np.float32()
, donc votre dernière ligne de code devrait se lire:
gray = (np.float32(imgUMat), cv2.COLOR_RGB2GRAY)
gray = cv2.cvtColor(cv2.UMat(imgUMat), cv2.COLOR_RGB2GRAY)
UMat fait partie de la API transparente (TAPI) qui aide à écrire un code pour les implémentations CPU et OpenCL.
Les éléments suivants peuvent être utilisés à partir de numpy
:
import numpy as np
image = np.array(image)
Ce n'est pas votre code qui pose problème c'est parfaitement bien:
gray = cv2.cvtColor(imgUMat, cv2.COLOR_RGB2GRAY)
Le problème est que imgUMat est None
donc vous avez probablement fait une erreur lors du chargement de votre image:
imgUMat = cv2.imread("your_image.jpg")
Je soupçonne que vous venez de saisir le mauvais chemin d'image.
canny
est-il votre propre fonction? Utilisez-vous Canny d'OpenCV à l'intérieur? Si oui, vérifiez si vous fournissez un argument approprié pour Canny
- le premier Canny
argument doit répondre aux critères suivants:
<type 'numpy.ndarray'>
dtype('uint8')
shape
devrait être 2 -Tuple
de int
s (Tuple
contenant exactement 2 entiers)Vous pouvez le vérifier en imprimant respectivement
type(variable_name)
variable_name.dtype
variable_name.shape
Remplacez variable_name
Par le nom de la variable que vous introduisez comme premier argument dans Canny
.
Parfois, j'ai cette erreur lorsque videostream de imutils le paquet ne reconnaît pas le cadre ou ne donne pas de cadre vide. Dans ce cas, la solution déterminera pourquoi vous avez une mauvaise image ou utilisez une méthode VideoCapture (0) standard à partir d'opencv2
Ajoutez simplement ceci au début: image = cv2.imread (image)
J'ai contourné cela en écrivant/lisant un fichier. J'ai deviné que cv.imread le mettrait dans le format dont il avait besoin. Ce code pour le programme anki Vector SDK mais vous avez l'idée.
tmpImage = robot.camera.latest_image.raw_image.save ('temp.png')
pilImage = cv.imread ('temp.png')
Il s'agit d'une erreur générale, qui se produit parfois, lorsque vous avez une incompatibilité entre les types de données que vous utilisez. Par exemple, j'ai essayé de redimensionner l'image avec opencv, cela a donné la même erreur. Ici est une discussion à ce sujet.
mais comment faites-vous cela avec cifar-10? je lis le fichier andtrying pour le convertir en hsv mais ne fonctionne pas. m'a donné la même erreur: '' '
Elif self.type == 'cifar-10': data = [] labels = [] print ("Reading") for file_ in tqdm (listdir (self.root_dir)): if file_.split (' _ ') [0] ==' data ': dict = unpickle (join (self.root_dir, file_)) data.extend (dict [b'data']) labels.extend (dict [b'labels ']) data = cv2. cvtColor (données, cv2. COLOR_RGB2HSV) '' '