Mayer icon indicating copy to clipboard operation
Mayer copied to clipboard

Convert AHardwareBuffer into OpenCV

Open JaouadROS opened this issue 1 year ago • 1 comments

Hello, I want to convert AHardwareBuffer into OpenCV, have you tried this code? I want to do something similar but the mat I get is empty

//Convert Android HardwareBuffer to OpenCV Mat
jlong hardwareBufferToMat(AHardwareBuffer* hardwareBuffer) {
    AHardwareBuffer_Desc bufferDesc;
    AHardwareBuffer_describe(hardwareBuffer, &bufferDesc);
    //Get all pixels data
    void* buffer;
    AHardwareBuffer_lock(hardwareBuffer, AHARDWAREBUFFER_USAGE_CPU_READ_OFTEN, -1, nullptr, &buffer);
    //Create OpenCV Mat
    auto *mat = new cv::Mat(bufferDesc.height, bufferDesc.width, CV_8UC4, buffer);
    AHardwareBuffer_unlock(hardwareBuffer, nullptr);
    return (jlong) mat;
}

JaouadROS avatar Jan 03 '24 15:01 JaouadROS