【问题标题】:OpenCV: How to load CHAR data into UCHAR cv::Mat structure from ueye cameraOpenCV:如何从 ueye 相机将 CHAR 数据加载到 UCHAR cv::Mat 结构中
【发布时间】:2012-11-09 23:01:32
【问题描述】:

我在将脚本从 IplImage 转换为 CvMat 结构时遇到了一个小问题。 大多数脚本我都没有问题,但是在我从我的 ueye 相机捕获图像的特定脚本中,我似乎找不到在不保留 IplImage 的情况下完成此任务的方法。

我想做的是将 m_pcImageMemory 直接加载到 CvMat 结构中.. 但这是 CHAR.. 而 cv::Mat 使用 UCHAR。

有人有一个示例如何创建一个空白 cv::Mat,创建正确的标题并将 m_pcImageMemory 加载到新的 cv::Mat 中吗?

请看我下面的代码:

cv::Mat getframeMat_ueye(){
    if (m_hCam !=0) {
        if (is_CaptureVideo (m_hCam, IS_WAIT) == IS_SUCCESS) {
            is_RenderBitmap (m_hCam, m_lMemoryId, m_hWndDisplay, m_nRenderMode);
        }
    }


    IplImage* tmpImg = cvCreateImageHeader (cvSize (m_nSizeX, m_nSizeY), IPL_DEPTH_8U, m_channels);
    ueye_hasheader=true;
    tmpImg->imageData = m_pcImageMemory; 
    cv::Mat retmat=cv::cvarrToMat(tmpImg);
    cvReleaseImage(&tmpImg);

    return retmat;
}

根据Martin他的cmets,我把代码改成:

cv::Mat getframeMat_ueye(){
    if (m_hCam !=0) {
        if (is_CaptureVideo (m_hCam, IS_WAIT) == IS_SUCCESS) {
            is_RenderBitmap (m_hCam, m_lMemoryId, m_hWndDisplay, m_nRenderMode);
        }
    }

    cv::Mat retmat(m_nSizeX, m_nSizeY,CV_8UC(m_channels),m_pcImageMemory);
    return retmat;
}

但是,当我这样做时,返回的图像会失真,并且图像大小也不正确。 (周围有宽度的大小。)

问候和感谢, 弗洛里斯。

【问题讨论】:

    标签: opencv char


    【解决方案1】:

    不要再使用iplImage了。

    cv::Mat mat(sizeX,sizeY,CV_8UC1,the_imagedata_camera);

    显然,垫子仅在数据不变时才有效。不用担心 char/uchar - 来自相机的数据几乎肯定没有签名!

    【讨论】:

    • 嗨@Martin,如上所述,这篇文章的唯一原因是从我的代码中获取所有 IplImage 函数。它仍在此脚本中的唯一原因是我还无法解决它。我尝试根据您的评论更改代码,但由于某种原因,当我使用此代码时图像失真: cv::Mat getframeMat_ueye(){ if (m_hCam !=0) { if (is_CaptureVideo (m_hCam, IS_WAIT) = = IS_SUCCESS) { is_RenderBitmap (m_hCam, m_lMemoryId, m_hWndDisplay, m_nRenderMode); } } cv::Mat retmat(m_nSizeX, m_nSizeY,CV_8UC(m_channels),m_pcImageMemory);返回 retmat; }
    • 您确定从相机返回的数据是 BGR 吗?如果不是,请检查 cvtColor()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多