2017-11-25 4 views
0

Ich versuche, einen Bildeditor (wie MS Paint oder Paint.net) zu verwenden, um Begrenzungsrahmen mit einer festen Farbe (wie reinem Rot mit RGB = 255) zu zeichnen , 0, 0) in Bildern, und laden Sie später die Bilder in Python (wie opencv imread) durch Suchen nach Pixeln mit diesem RGB-Wert (oder BGR-Wert in 0, 0, 255), so dass ich Etiketten für die Objekterkennung erstellen kann .Bildpixelwerte nach imwrite und/oderimread in Python opencv

Nachdem jedoch das Bild gespeichert und geladen wurde, sehe ich keine Pixel mit solchen RGB- oder BGR-Werten. Stattdessen liegen diese Pixel in einem Wertebereich, der weit von dem, was ich angegeben habe, entfernt sein kann.

Ich habe auch versucht, so etwas wie dies für Experiment Zweck zu verwenden:

cv2.rectangle(img_arr, (10, 10), (60, 60), (0, 0, 255), thickness=1) 

Gleich nach dieser Aussage kann ich Pixel mit Werten sehen (0, 0, 255). Allerdings, wenn ich cv2.imwrite laufen und dann cv2.imread wie folgt aus:

cv2.imwrite(full_path_name, img_arr) 

und später:

img_arr = cv2.imread(full_path_name) 

ich in dieser neuen img_arr bemerkt, gibt es keine irgendwelche Pixel mit diesen BGR-Werte jeder Mehr. Was ist das Problem?

Zurück zum ursprünglichen Problem der Beschriftung von Bildern für die Objekterkennung, ich möchte keine Werkzeuge für die Kennzeichnung verwenden, da die meisten von ihnen Mausbewegungen erkennen, jedoch ist meine Aufgabe der Objekterkennung Textbereiche zu erkennen, die erfordert sehr genaue Bounding-Boxen, so dass die späteren Phasen der Bildsegmentierung und Zeichenerkennung nicht zu schwer sein wird. Daher bevorzuge ich einen statischen Weg, so dass die Begrenzungsrahmen genau eingestellt und sogar überprüft werden können. Wenn sie endgültig sind, erstellen wir Etiketten. Wird diese Idee überhaupt funktionieren?

Vielen Dank!

+5

Wahrscheinlich verwenden Sie JPEG, das verlustbehaftet ist. Versuchen Sie es mit PNG. –

+0

Nach dem Vorschlag von @MarkSetchell. Versuchen Sie, eine segmentierte Farbbasis mit Schwellenwerten zu erstellen. Es ist wahrscheinlich, dass die Rotwerte um 255, aber nicht um 255 sind ... https: //opencv-srf.blogspot.com.au/2010/09/object-detection-using -color-separation.html – crodriguezo

+0

@crodriguezo Vielen Dank für Ihre Antwort. –

Antwort

1

Seien Sie vorsichtig, wenn Sie JPEG als Zwischenspeicher für Bildverarbeitungsaufgaben verwenden, da dies ein verlustbehaftetes Format ist und die Werte abweichen können, wenn Sie sie später zurücklesen.

Betrachten Sie möglicherweise verlustfreie PNG Format für die Zwischenspeicherung. Oder verwenden Sie NetPBM PGM (Graustufen) oder PPM (Farbe) Format für ein besonders einfaches Format zu lesen und zu schreiben - obwohl beachten Sie, dass es Metadaten, wie Urheberrechte oder EXIF-Daten nicht beibehalten kann.

Verwandte Themen