gpt4 book ai didi

OpenCV:如何从ueye相机将CHAR数据加载到UCHAR cv::Mat结构中

转载 作者:太空宇宙 更新时间:2023-11-03 21:12:31 24 4
gpt4 key购买 nike

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

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

是否有人提供了如何创建空白 cv::Mat、创建正确的 header 并将 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,the_imagedata_camera);

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

关于OpenCV:如何从ueye相机将CHAR数据加载到UCHAR cv::Mat结构中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13317295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com