c++ - 将 PByte 转换为 Mat OpenCV

标签 c++ opencv image-processing ps3

我正在使用带有 opencv 的 PS3 相机,它使用 PByte 数据类型。将 PByte 作为帧结果。在 SDK 示例中,他们使用 IplImage。我想使用 Mat 而不是 IplImage。但我无法将 PByte 转换为 Mat。我如何转换 PByte垫? SDK示例

     IplImage *pCapImage;
    PBYTE pCapBuffer = NULL;
    cvGetImageRawData(pCapImage, &pCapBuffer);
    while(_running)
        {
            cvGetImageRawData(pCapImage, &pCapBuffer);
            CLEyeCameraGetFrame(_cam, pCapBuffer, (i==0)?2000:0);
}
//Function from SDK

IMPORT(bool) CLEyeCameraGetFrame(CLEyeCameraInstance cam, PBYTE pData, int waitTimeout = 2000);

//MyCode//我使用2个摄像头。

    cv::Mat pCapImage[2];
    PBYTE pCapBuffer = NULL;
    while(_running){

        for (int i = 0; i < 2; i++)
                {
                                  //trying convert
                    pCapImage[i] = cv::Mat (cvSize(w, h), 4, &pCapBuffer,IPL_DEPTH_8U).clone();

                    CLEyeCameraGetFrame(_cam[i], pCapBuffer);
                }

                Mat pCapImageMatL = pCapImage[0];
                Mat pCapImageMatR = pCapImage[1];
                imshow(_windowNameL, pCapImageMatL);
                imshow(_windowNameR, pCapImageMatR);
}

最佳答案

如果您使用的是 OpenCV 3,IPlImage 已被弃用。所以@herohuyongtao 的回答是行不通的。

在这种情况下,解决方法是

cv::Mat frame;
frame = cv::cvarrToMat(pCapImage);

关于c++ - 将 PByte 转换为 Mat OpenCV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32771925/

相关文章:

c++ - 哪种图像处理技术?

c++ - 作为拷贝传递的 std::move() 变量有什么影响?

c++ - c/c++ - 警告 : sched_policy. h: 没有这样的文件或目录

python - 如何将 numpy 数组 View 转换为 opencv 矩阵?

opencv - Emgu CV Blob 检测 - 视频监控示例

OpenCV 特征匹配多个对象

c++ - 如何使用 QtConcurrent::run 重载函数

c++ - 试图理解这个解决方案

c++ - 如何在opencv中获取轮廓中的角

opencv - 要跟踪的好功能?增强现实无人机 2