ich wusste nicht in welchen Bereich mit OpenCV-Fragen, deshalb jetzt mal hier:
Ich benutze Python 2.6 und OpenCV um mit einer Webcam rote Gegenstände zu filtern und möchte dann die Position eines solchen Gegenstandes finden. Mein Code soweit (größtenteils aus dem Inet zusammenkopiert):
Code: Alles auswählen
from opencv import *
from ctypes import *
from opencv import cv
from opencv import highgui
highgui.cvNamedWindow("MyWindow", 1)
highgui.cvNamedWindow("Filtered Stream", 1)
capture = highgui.cvCreateCameraCapture(0)
while 1:
# Grab the current frame from the camera
frame = highgui.cvQueryFrame(capture)
# Show the current image in MyWindow
highgui.cvShowImage("MyWindow", frame)
# Create a 8-bit 1-channel image with same size as the frame
color_mask = cv.cvCreateImage((640,480), 8, 1)
# Specify the minimum / maximum colors to look for:
max_color = (88,88,255)#(255, 88, 88)
min_color = (0,0,160)#(160, 0, 0)
# Find the pixels within the color-range, and put the output in the color_mask
cv.cvInRangeS(frame, cv.cvScalar(*min_color), cv.cvScalar(*max_color), color_mask)
highgui.cvShowImage("Filtered Stream", color_mask)
# Wait a bit and check any keys has been pressed
key = highgui.cvWaitKey(10)
# --------- FILTERING ---------- #
# Next, split the mask into seperated - connected parts, by finding the contour:
storage = cv.cvCreateMemStorage(0)
c_count, contours = cv.cvFindContours(color_mask, storage, cv.CV_RETR_LIST, cv.CV_CHAIN_APPROX_SIMPLE)
# Go trough each contour
for contour in contours.hrange():
# Do some filtering
# .....

Ich habs schon mit anderen Argumenten in der Klammer versucht, bekomm aber immer den Fehler. Das Gleiche passiert auch bei dem Contours-Beispiel, das bei OpenCV dabei ist. Internet-Recherche ergab, dass die Funktion findContours bei vielen nicht richtig funktioniert. Deshalb möchte ich wissen, ob man den Fehler irgendwie beheben kann, oder was ich alternativ zu findContours benutzen könnte.
Vielen Dank im Voraus,
asdman3000