2012-04-02 12 views
2

Ich bin auf der Suche nach einer Möglichkeit, ein RAW8-Bild, das von einer Kamera kommt, in ein Farbbild umzuwandeln. NSImage/CIIImage.Wie konvertiert man RAW8 in RGB8 NSBeispiel

Gibt es eine Framework-Klasse, die Bayer filter anwenden und mir ein RGB-Farbbild geben kann?

I.e. Ich habe ein Array von Bytes mit 8bpp und ich möchte ein 32bpp RGB NSImage oder CIImage.

Ich habe versucht CIFilter filterWithImageData, aber das macht Xcode mit EXC_BREAKPOINT stoppen?

Antwort

0

Am Ende kam ich mit zwei Lösungen auf:

OpenCV verwenden (http://www.OpenCV.org):

CvMat M = cvMat(height, width, CV_8UC1, frame->image); 
    IplImage img; 
    cvGetImage(&M, &img); 

    IplImage *copyImg = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3); 
    cvCvtColor(&img, copyImg, CV_BayerBG2RGB); 

Aber ich fehlte die Hand: Ich war das Bild von der Kamera mit libdc1394 bekommen und dass stellt eine Konvertierungsmethode selbst zur Verfügung:

dc1394_debayer_frames(frame, new_frame, DC1394_BAYER_METHOD_NEAREST); 
1

Warum nicht mit der offensichtlichen Lösung gehen: ImageIO.framework can handle RAW images.

+0

Können Sie mir noch ein paar Tipps geben? Ich habe die Bildtypen aufgelistet und es gibt verschiedene Rohbild-Typen (Adobe, Sony, Sie nennen sie). Ich habe versucht, ein CGImageSourceCreateWithData mit diesen Zeichenfolgen als kCGImagSourceTypeIdentifierHint erstellen, aber kein Glück. CGImageSourceCreateImageAtIndex (... 0) gibt NULL zurück, ich kann weder Typ oder Anzahl abfragen usw. Es fühlt sich an, als ob das nicht der richtige Weg sein kann, da ich Breite/Höhe, bpp und das tatsächliche Bayer-Muster nicht vorschlage. – msohn