Для обработки моих предварительных кадров моей камеры в OpenCV мне нужен доступ к необработанным пиксельным данным/байтам. Итак, есть новый SoftwareBitmap, который должен точно обеспечить это.WinRT C++ (Win10) Доступ к байтам из SoftwareBitmap/BitmapBuffer
Существует example для C#, но в Visual C++ я не могу получить IMemoryBufferByteAccess (см. Примечания) Интерфейс работает.
код с исключениями:
// Capture the preview frame
return create_task(_mediaCapture->GetPreviewFrameAsync(videoFrame))
.then([this](VideoFrame^ currentFrame)
{
// Collect the resulting frame
auto previewFrame = currentFrame->SoftwareBitmap;
auto buffer = previewFrame->LockBuffer(Windows::Graphics::Imaging::BitmapBufferAccessMode::ReadWrite);
auto reference = buffer->CreateReference();
// Get a pointer to the pixel buffer
byte* pData = nullptr;
UINT capacity = 0;
// Obtain ByteAccess
ComPtr<IUnknown> inspectable = reinterpret_cast<IUnknown*>(buffer);
// Query the IBufferByteAccess interface.
Microsoft::WRL::ComPtr<IMemoryBufferByteAccess> bufferByteAccess;
ThrowIfFailed(inspectable.As(&bufferByteAccess)); // ERROR ---> Throws HRESULT = E_NOINTERFACE
// Retrieve the buffer data.
ThrowIfFailed(bufferByteAccess->GetBuffer(_Out_ &pData, _Out_ &capacity)); // ERROR ---> Throws HRESULT = E_NOINTERFACE, because bufferByteAccess is null
Я тоже попытался это:
HRESULT hr = ((IMemoryBufferByteAccess*)reference)->GetBuffer(&pData, &capacity);
HRESULT это нормально, но я не могу получить доступ к PDATA -> нарушение прав доступа чтения памяти.
Благодарим за помощь.
Похоже, вы должны использовать 'Microsoft :: WRL :: ComPtr' с 'reference', а не' buffer'. –
Привет. Вам удалось отобразить изображение в цветовом пространстве HSV? У меня есть некоторые артефакты ... В C# (UWP) у меня есть пропуск SoftwareBitmap на C++, там конвертируется SoftwareBitmap в cv :: Mat, меняет цвет cpase на HSV, конвертирует Mat в SoftwareBitmap и переходит обратно в C# .. И set Image.Source ... И это то, что у меня есть .. https://onedrive.live.com/redir?resid=357572637B8B8769!150460&authkey=!ACmXOuwLkoOyxFY&v=3&ithint=photo%2cPNG – Gregsparrow
Подробнее здесь http: //stackoverflow.com/questions/34198259/winrt-c-win10-opencv-hsv-color-space-image-display-artifacts – Gregsparrow