2016-08-10 5 views
0

Ok, also was ich tun möchte, ist durch eine ganze Reihe von Pixeln zu gehen, und für jedes Pixel greifen Sie den grünen Wert, blauen Wert und roten Wert. Das ist so später, ich kann Muster zwischen ihnen sehen.Python 2.7- Trennen b, g, r in einem Array

Also, so sieht mein Code aus.

for frame in camera.capture_continuous(rawCapture, format='bgr', use_video_port =True): 
data=frame.array 
rawCapture.truncate(0) 
ColourCount = Calculations(data) 

Ok, jetzt war das nur, um Ihnen zu zeigen, was der allgemeine Code ist. Hier wird es schwierig. Auch, wenn das für euch auf PC nicht funktioniert, benutzt einfach irgendeinen opencv, ich bin mir sicher, dass sie die Daten gleich speichern.

Calculations(data): 
for n in data: 
    for s in n 
     B=s[0] 
     G=s[1] 
     R=s[2] 

Dann, wenn ich diese drucke, ergibt es nicht das gewünschte Ergebnis.

Also s ist wie [0, 14, 0] Und B ist wie [0, 0, 0] wie die anderen. (Das sind nur Beispiele, obwohl die Werte nicht hoch aus irgendeinem Grunde zu bekommen.

Nun, was ich möchte, ist, es zu spalten, so B ist der blaue Kanal, ist G der grüne Kanal usw.

So für das N Beispiel: B = 0 G = 14 R = 0

wie erreiche ich diese

ich einzelne Zahlen will, aber es schickt mich fast ein ganzes Pixel zurück

?

EDIT: Ich glaube, ein Teil meines Fehlers davor war, dass der Artikel, den ich sammelte, tatsächlich eine Zeile statt eines Pixels war. Also habe ich wie oben gesehen eine weitere Schleife eingefügt.

Antwort

0

Sie können die Funktion split() verwenden.

Calculations(data): 
bgr = cv2.split(data) 
B = bgr[0] 
G = bgr[1] 
R = bgr[2] 
Verwandte Themen