2017-09-07 4 views
1

J'ai basculé un projet de python 2.7 à 3.5 et maintenant je ne peux pas utiliser la plupart des fonctions qui nécessitent des tuples.la plupart des arguments de tuple cv2 ne fonctionnent pas dans python 3.5 (windows 7)

À titre d'exemple:

rgb = (255,0,0) 
cv2.circle(img,(x, y),2,rgb,-1) 

retournera le "nouveau style format getArgs mais l'argument n'est pas un tuple" erreur système.

Peu importe comment j'entre tuple exprimant la couleur du cercle il échouera toujours, même si je l'utilise explicitement « tuple() »

Je sais que ce problème n'est pas nouvelle, mais les solutions disponibles sont package dépendant (https://mail.python.org/pipermail/python-dev/2017-January/147091.html). Je veux juste mettre des points sur une image sans avoir à apporter une autre bibliothèque quand le même script utilise déjà opencv.

EDIT: il se plaint des x, y. La raison pour laquelle cela a fonctionné à 2.7 et non 3.5 ne sont pas claires, mais déclarant spécifiquement la valeur en tant que tuple() résout le problème

+0

Selon https://stackoverflow.com/questions/13225525/system-error-new-style-getargs-format-but-argument-is-not-a-tuple-when- en utilisant Votre problème pourrait également être lié à Oreiller ... – Eskapp

Répondre

1

En Python 3.5, les travaux suivants:

import numpy as np 
import cv2 


img = np.zeros((100, 100)) # Black image 
rgb = (255, 0, 0) 
cv2.circle(img, (50, 50), 2, rgb, -1) # Plot centered on (50, 50) 

Pourriez-vous essayer cela sur votre système et voir si l'erreur persiste?

(Utilisation de Windows 10, Anaconda3, OpenCV 3.1.0)

Si cela fonctionne, votre problème peut être lié au type de la variable « img » ou le type de ses valeurs (voir le lien que j'ai posté comme un commentaire de votre question)

+1

vous avez raison, le tuple étant rejeté est mon x, y pas le RGB. Je vous remercie – Snesticle