Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCV:如何从ueye摄像机将字符数据加载到UCHAR cv::Mat结构中_Opencv_Char - Fatal编程技术网

OpenCV:如何从ueye摄像机将字符数据加载到UCHAR cv::Mat结构中

OpenCV:如何从ueye摄像机将字符数据加载到UCHAR cv::Mat结构中,opencv,char,Opencv,Char,我在将脚本从IplImage转换为CvMat结构时遇到了一个小问题。 大多数脚本我都没有问题,但在我从ueye相机拍摄图像的特定脚本中,我似乎找不到一种方法来完成这项任务,而不将IplImage保持在两者之间 我想做的是将m_pcImageMemory直接加载到CvMat结构中。。但这是查尔。。而cv::Mat使用UCHAR 有人举过一个例子吗?我如何创建一个空白的cv::Mat,创建正确的头并将m_pcImageMemory加载到新的cv::Mat中 请参阅下面我的代码: cv::Mat ge

我在将脚本从IplImage转换为CvMat结构时遇到了一个小问题。 大多数脚本我都没有问题,但在我从ueye相机拍摄图像的特定脚本中,我似乎找不到一种方法来完成这项任务,而不将IplImage保持在两者之间

我想做的是将m_pcImageMemory直接加载到CvMat结构中。。但这是查尔。。而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的评论,我将代码更改为:

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;
}
但是,当我这样做时,返回的图像会出现失真,并且图像大小也不正确。(周围有宽度大小。)

问候和感谢,
弗洛里斯。

不要再使用iplImage了

cv::Mat Mat(sizeX、sizeY、cv_8UC1、图像数据摄像机)


显然,mat仅在数据不变时有效。不用担心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_hwndisplay,m_nundermode)}cv::Mat retmat(m_nSizeX、m_nSizeY、CV_8UC(m_通道)、m_pcImageMemory);返回retmat;}您确定从相机返回的数据是BGR吗?如果不是,请检查cvtColor()