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