Bild in Binärstrom konvertieren

Meine App hat zwei Seiten: Auf der einen Seite verwende ich C ++, um die Bilder einer Kamera mit Pleoras EBUS SDK zu lesen. Wenn dieser Stream zum ersten Mal empfangen wird, bevor ich den Puffer in ein Bild umwandle, kann ich den Stream 16 Bit auf einmal lesen, um einige Berechnungen für jedes Pixel durchzuführen, dh es gibt einen 16-Bit-Datenblock für jedes Pixel .

Jetzt ist die zweite Hälfte eine Django-Web-App, in der mir auch diese Videoausgabe präsentiert wird, diesmal über einen ffmpeg, nginx, hls-Stream. Wenn der Benutzer auf das Video klickt, möchte ich in der Lage sein, das aktuelle Bild und die Koordinaten seines Klicks zu erfassen und die gleiche Berechnung wie oben im Abschnitt C ++ durchzuführen.

Im Moment benutze ich eine HTML5-Zeichenfläche, um den Frame zu erfassen, und ich verwendecanvas.toDataURL() Um den Frame in ein Base64-codiertes Image zu konvertieren, übergebe ich das Base64-Image, die Koordinaten und die Abmessungen des Frames über AJAX an Python.

In Python versuche ich, dieses Base64-codierte Bild so zu manipulieren, dass 16 Bit pro Pixel erzielt werden. Im Moment mache ich folgendes:

pos = json.loads(request.GET['pos'])
str_frame = json.loads(request.GET['frame'])
dimensions = json.loads(request.GET['dimensions'])

pixel_index = (dimensions['width'] * pos['y']) + pos['x'] + 1

b64decoded_frame = base64.b64decode(str_frame.encode('utf-8'))

Es gibt jedoch weit weniger Indizes in derb64decoded_frame Dann sind Pixel im Bild und die ganzzahligen Werte sind nicht annähernd so hoch wie erwartet. Ich habe es überprüft und das Bild ist intakt, da ich es als PNG speichern kann.

Zusammenfassend kann man sagen, wie man ein base64-Bild in einen serialisierten Binärstrom konvertiert, bei dem jedes Pixel durch 16 Bit dargestellt wird.

AKTUALISIEREN

Ich habe vergessen zu erwähnen, dass ich python3.2 verwende

Und nach ein paar weiteren Recherchen habe ichdenken Das, was ich versuche, es zu tun, bekommen den Mono16-Wert eines bestimmten Pixels. Ich weiß nicht genau, ob ich das tun möchte, aber wenn jemand erklären könnte, wie man entweder ein Bild in Mono16 oder ein Pixel in Mono16 konvertiert, könnte ich das untersuchen und herausfinden, ob es tatsächlich die Lösung ist.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage