J'essaie d'extraire les contours d'une image, de faire pivoter ces contours et de les insérer dans une nouvelle image. Le code est donné ci-dessous. Mon problème est dans la méthode de rotation des contours. Lorsque le code est exécuté, l'erreur suivante est vue "TypeError: l'objet 'cv.cvseq' ne prend pas en charge l'affectation d'élément".Changer les éléments d'un CvSeq en python
Une idée de la façon de résoudre ce problème? J'utilise des liaisons python pour Opencv 2.2.
import cv
def rotateContour(contour, centerOfMass, angle):
for index in range(0, len(contour)):
contour[index] = rotatePoint(contour[index], centerOfMass, angle)
return contour
def rotatePoint(point, centerOfMass, angle):
px, py = point
x, y = centerOfMass
temppoint = (px-x, py-y)
temppointx = temppoint[0]*math.cos(angle) + temppoint[1] * math.sin(angle)
temppointy = temppoint[1]*math.cos(angle) - temppoint[0] * math.sin(angle)
temppoint = (temppointx + x, temppointy + y)
return temppoint
inputimage = cv.LoadImage('filename.png', cv.CV_LOAD_IMAGE_GRAYSCALE)
outputimage = cv.CreateImage((10000, 300), 8, 1)
storage = cv.CreateMemStorage (0)
contours = cv.FindContours(inputimage, storage, cv.CV_RETR_EXTERNAL, cv.CV_CHAIN_APPROX_SIMPLE)
for contour in contour_iterator(contours):
gray = cv.CV_RGB(200, 200, 200)
# Rotate contour somehow
contour = rotatecontour(contour)
cv.DrawContours(outputimage, contour, gray, gray, 0, -1, 8)
cv.SaveImage("outputfile.png", outputimage)