2016-05-22 4 views
0

Ich habe versucht, eine WriteableBitmap zu einem cv :: Mat in einer C++/Cx Microsoft Universal App zu konvertieren. Aber wenn ich versuche, mit dem erstellten Mat Fortschritt, erhalte ich folgende Fehlermeldung:Konvertieren einer SoftwareBitmap oder WriteableBitmap in cv :: Mat in C++/Cx

enter image description here

Dies ist mein Code:

void App1::MainPage::processImage(SoftwareBitmap^ bitmap) 
{ 
    WriteableBitmap^ wb = ref new WriteableBitmap(bitmap->PixelWidth, bitmap->PixelHeight); 
    bitmap->CopyToBuffer(wb->PixelBuffer); 
    Mat img_image(wb->PixelHeight, wb->PixelWidth, CV_8UC3,(void*)wb->PixelBuffer); 
    //next step results in error 
    cvtColor(img_image, img_image, CV_BGR2BGRA); 
    ... 
} 

Also meine letzte Frage: Wie die SoftwareBitmap konvertieren oder die WriteableBitmap zu einem cv :: Mat?

Antwort

0

verwendete ich das Datareader, das Problem zu lösen:

void App1::MainPage::processImage(SoftwareBitmap^ bitmap) 
{ 
    WriteableBitmap^ wb = ref new WriteableBitmap(bitmap->PixelWidth, bitmap->PixelHeight); 
    bitmap->CopyToBuffer(wb->PixelBuffer); 
    IBuffer^ buffer = wb->PixelBuffer; 
    auto reader = ::Windows::Storage::Streams::DataReader::FromBuffer(buffer); 
    BYTE *extracted = new BYTE[buffer->Length]; 
    reader->ReadBytes(Platform::ArrayReference<BYTE>(extracted, buffer->Length)); 
    Mat img_image(wb->PixelHeight, wb->PixelWidth, CV_8UC4, extracted); 
    cvtColor(img_image, img_image, CV_RGBA2BGRA); 
    ... 
} 

Thx an Peter Torr für den Hinweis.

Verwandte Themen