Mit drawContours OpenCV-Funktion in python
Habe ich installiert OpenCV 2.2 und wenn ich versuche, mit drawContours bekomme ich die folgende Fehlermeldung:
cv.drawContours(frame, contours, 0, cv.RGB(255, 0, 0))
TypeError: <unknown> is not a numpy array
Den code für diesen Fehler ist der folgende:
storage = cv.CreateMemStorage(0)
contours = cv.FindContours (color_mask, storage, method = cv.CV_CHAIN_APPROX_SIMPLE)
cv.drawContours(frame, contours, 0, cv.RGB(255, 0, 0))
Die python-Dokumentation entspricht nicht mit der richtigen Reihenfolge der Parameter (ich weiß die richtige Reihenfolge zu danken, die im LEERLAUF) und die C++ - Dokumentation für diese Funktion hilft mir nicht sehr viel
Hier ist der vollständige code (relevante code):
cv.NamedWindow("MyWindow", 1)
capture = cv.CaptureFromCAM(0)
while 1:
frame = cv.QueryFrame(capture)
color_mask = cv.CreateImage(cv.GetSize(frame), 8, 1)
cv.InRangeS(frame, cv.Scalar(*min_color), cv.Scalar(*max_color), color_mask)
cv.CvtColor(frame, frame, cv.CV_BGR2HSV)
storage = cv.CreateMemStorage(0)
contours = cv.FindContours (color_mask, storage, method = cv.CV_CHAIN_APPROX_SIMPLE)
cv.drawContours(image = frame, contours = contours, contourIdx = 0, color = cv.RGB(255, 0, 0))
cv.ShowImage("MyWindow", frame)
Vielen Dank im Voraus
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie sich bewusst sein, dass drawContours und DrawContours sind zwei verschiedene Funktionen. Sie tatsächlich tun, die gleiche Sache, aber Sie akzeptieren verschiedene Parameter. Ich glaube, der erste akzeptiert nur numpy-arrays statt CvMat oder anderen arrays von openCV.
Sollten Sie prüfen, die Parameter der Funktion in der python-Referenz DrawContours, und versuchen, nicht zu verlassen sich auf die Reihenfolge der Parameter beim Aufruf einer Funktion, die mehrere Argumente haben, sollten Sie Etiketten verwenden.
In anderen Worten :
Wenn Sie überprüfen Sie die Dokumentation
DrawContours
:Beachten Sie, dass die Funktion akzeptiert 8 Argumente:
und es gibt keine Argumente genannt
contourIdx
odercolor
zB:
TypeError: Required argument 'contourIdx' (pos 3) not found
Verwenden Sie die Funktion cv2array und array2cv auf OpenCV Cheatsheet zu konvertieren Sie das Bild in die bestimmten format.
Etwas wie dieses:
Ich habe einige Fehler in Python-wrapper für OpenCV 2.2. Beispiele wie "camshift.py" laufen mit OpenCV 2.1 aber nicht mit OpenCV 2.2. Ich nehme an, meine Probleme sind verwandt, aus diesem Fehler (jetzt verwende ich version 2.1)
Habe ich berichtet, dieser Fehler sowie die Fehler in Dokumentation
@P2bM vielen Dank für Ihre Hilfe