3D-Webcam
Aus Belug Wiki
Inhaltsverzeichnis |
3D Webcam
Hier entsteht die Wikiseite zum "3D-Webcam" Projekt.
Benötigt
Um die hier beschrieben Bildverarbeitung nachbauen zu können benötigt man:
- 2 identische Webcams
- PC
- Python
- OpenCV-python bindings
Thoerie
Anaglyph
Zur Berechnung eines 3D Anaglyph-Bildes wird der Rot Kanal aus einer Kamera mit dem Cyan Bild der anderen Kamera zu einem Bild zusammen gefügt.
Programme
Hier das Pythonprogramm für Anaglyphe 3D Bilder:
#!/usr/bin/env python # -*- encoding: utf-8 -*- import cv # variables WIDTH = 640 HEIGHT = 480 lcam = cv.CaptureFromCAM(0) rcam = cv.CaptureFromCAM(1) # WebCam eigenschaften setzen cv.SetCaptureProperty(lcam, cv.CV_CAP_PROP_FRAME_WIDTH, WIDTH) cv.SetCaptureProperty(rcam, cv.CV_CAP_PROP_FRAME_WIDTH, WIDTH) cv.SetCaptureProperty(lcam, cv.CV_CAP_PROP_FRAME_HEIGHT, HEIGHT) cv.SetCaptureProperty(rcam, cv.CV_CAP_PROP_FRAME_HEIGHT, HEIGHT) taste = 0 # 8 bit 3 Kanal Rottransformatrionsmatrix rmat = cv.CreateMat(HEIGHT, WIDTH, cv.CV_8UC3) for i in range(HEIGHT): for k in range(WIDTH): # rmat[i, k] = (0, 0, 1) # Full color red cyan rmat[i, k] = (0.114, 0.299, 0.587) # Half Color Red-Cyan # 8 bit 3 Kanal Grün-Blau Transformationsmatrix gbmat = cv.CreateMat(HEIGHT, WIDTH, cv.CV_8UC3) for i in range(HEIGHT): for k in range(WIDTH): gbmat[i, k] = (1, 1, 0) # Outputmatrix omat = cv.CreateMat(HEIGHT, WIDTH, cv.CV_8UC3) for i in range(HEIGHT): for k in range(WIDTH): omat[i, k] = (0, 0, 0) # main loop while taste <> ord("q"): # Solange nicht die Taste "q" gedrueckt wurde Bilder # erneuern lbild = cv.QueryFrame(lcam) # linkes Bild einlesen rbild = cv.QueryFrame(rcam) # rechtes Bild einlesen matl = cv.GetMat(lbild) # in Matrix überführen matr = cv.GetMat(rbild) ### Rotkanal aus rechter Kamera auslesen #print(rmat, matr) cv.Mul(rmat, matr, matr) ### grün blau aus linker Kamera cv.Mul(gbmat, matl, matl) ### Bilder zusammenfügen cv.Add(matl, matr, omat) cv.ShowImage("3D", omat) taste = cv.WaitKey(2)
Spezielles
Zukunft
Für die Zukunft stehen noch folgende Dinge auf der TODO-Liste:
- Umsetzung in C für bessere Performance
- Videoaufnahme/Photo Funktionalität
- Parallelisierung der Matrizenoperationen
- besseres Interface
- < Dein Vorschlag hier... >
Ähnliche Seiten und Projekte
Stereofy 3D Bilder mit dem N900 schießen.

