麻烦把图像从c到matlab . .

1视图(30天)
Vikash阿南德
Vikash阿南德 2011年5月11日
mxArray* mat1;
UINT8_T*动态数据;
mwSize指数;
无符号长整数元素;
元素= (ImgTempTp - >宽)* (ImgTempTp - >高度);
动态数据= mxCalloc(元素,sizeof (UINT8_T));
(指数= 0;指数<元素;指数+ +){
动态数据(指标)= ImgTempTp - > imageData(指数);
}
mat1 = mxCreateNumericMatrix (0, 0, mxUINT8_CLASS mxREAL);
mxSetData (mat1、动态数据);
mxSetM (mat1 ImgTempTp - >高度);
mxSetN (mat1 ImgTempTp - >宽度);
mlfShowimage (mat1);
ImgTempTp是一个图像由opencv。unsigned char数据类型。
函数[]= showimage (img)
图中,imshow (img);
输入(“按回车键继续…”);
结束
有时正确形象出现,但是很多时候它在2 - 3礼仪即混合2 - 3部分以倾斜的方式包含了原始图像的部分
我有试过 memcpy 也。但我得到同样的错误. .请帮助……
2的评论
Vikash阿南德
Vikash阿南德 2011年5月11日
结果:
https://sites.google.com/site/scrapfromvks/matlab
这些图片已经被opencv哈雾检测和传递给matlab . .Opencv正确显示所有这些。

登录置评。

答案(2)

Kaustubha Govind
Kaustubha Govind 2011年5月11日
有什么原因让你使用一个相当迂回的方式实现这一目标?为什么不使用类似:
mxArray* mat1;
UINT8_T*动态数据;
mwSize指数;
无符号长整数元素;
元素= (ImgTempTp - >宽)* (ImgTempTp - >高度);
mat1 = mxCreateNumericMatrix (ImgTempTp - >高度,ImgTempTp - >宽度,mxUINT8_CLASS, mxREAL);
动态数据= (UINT8_T *) mxGetData (mat1);
(指数= 0;指数<元素;指数+ +){
动态数据(指标)= ImgTempTp - > imageData(指数);
}
mlfShowimage (mat1);
你知道如果ImgTempTp - > imageData包含图像的索引顺序正确吗?似乎正在读取图像沿对角线。你试过检查的内容ImgTempTp - > imageData和比较它们与img的价值传递给showimage ?
3评论
Kaustubha Govind
Kaustubha Govind 2011年5月11日
可能比opencv不知为何不将像素值存储在预期的线性顺序?

登录置评。


Vikash阿南德
Vikash阿南德 2011年5月13日
嘿登顶。我发现解决方案. .这是4字节对齐。我缩放图像在传输前opencv matlab的尺寸是4的倍数,这个办法非常好! ! !:)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!