在opencv中,如何将二维数组转化为一副图像进行显示?

最近学了些opencv,想把摄像头拍到的图像通过opencv显示出来,摄像头拍到的数据存到二维数组中,然后通过opencv显示,大概的程序如下:

        unsigned char graph[64][128];//摄像头拍到的数据

        IplImage* img = cvCreateImage( cvSize(64,128), 16, 1 ); //size为图像宽高,depth为位深度,channels为通道数
        img->imageData = (char*)graph; //IplImage里没有unsigned char型的指针,我只能(char*)graph,不知道有没有好的办法
        cvNamedWindow( "Image",0 );//创建窗口
        cvShowImage( "Image", img );//显示图像
程序出来的结果:

不知道为什么出来的图片会这样,刚学有很多还不会,路过的高手给点建议,感激不尽!!

分享到:   《在opencv中,如何将二维数组转化为一副图像进行显示?》QQ好友和群  《在opencv中,如何将二维数组转化为一副图像进行显示?》QQ空间  《在opencv中,如何将二维数组转化为一副图像进行显示?》腾讯微博  《在opencv中,如何将二维数组转化为一副图像进行显示?》腾讯朋友 《在opencv中,如何将二维数组转化为一副图像进行显示?》收藏
  回复

举报

   
zyechu 《在opencv中,如何将二维数组转化为一副图像进行显示?》 2# 《在opencv中,如何将二维数组转化为一副图像进行显示?》  楼主 |  发表于 2013-4-6 12:57:58  |  只看该作者

在opencv中,如何将二维数组转化为一副图像进行显示?

木有人回答的! 《在opencv中,如何将二维数组转化为一副图像进行显示?》  《在opencv中,如何将二维数组转化为一副图像进行显示?》
 
  回复 支持 反对

举报

   
tomliao 《在opencv中,如何将二维数组转化为一副图像进行显示?》 3# 《在opencv中,如何将二维数组转化为一副图像进行显示?》  发表于 2013-4-7 18:18:42  |  只看该作者

在opencv中,如何将二维数组转化为一副图像进行显示?

img->imageData = (char*)graph;
改成下面试试吧:
for(int y=0;y<height;y++)
for(int x=0;x<width;x++)
img->imageData[y*width+x]=graph[[y*width+x];
麻烦你顺便看一下我的帖子http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=25616
谢了, 《在opencv中,如何将二维数组转化为一副图像进行显示?》
 
  回复 支持 反对

举报

   
tomliao 《在opencv中,如何将二维数组转化为一副图像进行显示?》 4# 《在opencv中,如何将二维数组转化为一副图像进行显示?》  发表于 2013-4-7 18:20:43  |  只看该作者

在opencv中,如何将二维数组转化为一副图像进行显示?

对了 16改成 IPL_DEPTH_8U
 
  回复 支持 反对

举报

   
zyechu 《在opencv中,如何将二维数组转化为一副图像进行显示?》 5# 《在opencv中,如何将二维数组转化为一副图像进行显示?》  楼主 |  发表于 2013-4-8 23:44:00  |  只看该作者

在opencv中,如何将二维数组转化为一副图像进行显示?

我按你说的改了,效果一样,我的问题还没解决.你也可以Out->imageData = (char*)outimage;试试。
 
  回复 支持 反对

举报

   
tomliao 《在opencv中,如何将二维数组转化为一副图像进行显示?》 6# 《在opencv中,如何将二维数组转化为一副图像进行显示?》  发表于 2013-4-9 16:33:12  |  只看该作者

在opencv中,如何将二维数组转化为一副图像进行显示?

我按你说的改了,效果一样,我的问题还没解决.你也可以Out->imageData = (char*)outimage;试试。

呵呵也不行

 
  回复 支持 反对

举报

   
tomliao 《在opencv中,如何将二维数组转化为一副图像进行显示?》 7# 《在opencv中,如何将二维数组转化为一副图像进行显示?》  发表于 2013-4-9 16:50:18  |  只看该作者

在opencv中,如何将二维数组转化为一副图像进行显示?

我按你说的改了,效果一样,我的问题还没解决.你也可以Out->imageData = (char*)outimage;试试。

我知道你错哪了,你应该用一个函数cvConvert,使用例子如下
void Show(CvMat* mat)
{
CvSize size = cvSize(mat->width,mat->height);
IplImage* imgBuf = cvCreateImage(size,IPL_DEPTH_8U,1);
cvConvert(mat,imgBuf);
cvNamedWindow(&quot;mat&quot;,CV_WINDOW_AUTOSIZE);
cvShowImage(&quot;image&quot;,mat);
cvWaitKey(0);
cvReleaseImage(&imgBuf);
}
也就是说你先将数组的值赋给Cvmat,再将cvmat经cvconvert转换为IplImage,再显示应该就ok了。

 
  回复 支持 反对

举报

   
zyechu 《在opencv中,如何将二维数组转化为一副图像进行显示?》 8# 《在opencv中,如何将二维数组转化为一副图像进行显示?》  楼主 |  发表于 2013-4-9 22:55:14  |  只看该作者

在opencv中,如何将二维数组转化为一副图像进行显示?

[quote=&quot;zyechu&quot;:31hu1m46]我按你说的改了,效果一样,我的问题还没解决.你也可以Out->imageData = (char*)outimage;试试。

我知道你错哪了,你应该用一个函数cvConvert,使用例子如下
void Show(CvMat* mat)
{
CvSize size = cvSize(mat->width,mat->height);
IplImage* imgBuf = cvCreateImage(size,IPL_DEPTH_8U,1);
cvConvert(mat,imgBuf);
cvNamedWindow(&quot;mat&quot;,CV_WINDOW_AUTOSIZE);
cvShowImage(&quot;image&quot;,mat);
cvWaitKey(0);
cvReleaseImage(&imgBuf);
}
也就是说你先将数组的值赋给Cvmat,再将cvmat经cvconvert转换为IplImage,再显示应该就ok了。[/quote:31hu1m46]

我之前就想过我CvMat,但没想到cvConvert()这个,按你说的改了,图像出来是反的,我用cvFlip(mat,mat,0);把它反过来了,效果还是不怎么样。还是有些黑边框出现,图片太小,不知道怎么放大?你的问题解决了吗?

 
  回复 支持 反对

举报

   
tomliao 《在opencv中,如何将二维数组转化为一副图像进行显示?》 9# 《在opencv中,如何将二维数组转化为一副图像进行显示?》  发表于 2013-4-10 14:59:34  |  只看该作者

在opencv中,如何将二维数组转化为一副图像进行显示?

[quote=&quot;tomliao&quot;:rdohzj27][quote=&quot;zyechu&quot;:rdohzj27]我按你说的改了,效果一样,我的问题还没解决.你也可以Out->imageData = (char*)outimage;试试。

我知道你错哪了,你应该用一个函数cvConvert,使用例子如下
void Show(CvMat* mat)
{
CvSize size = cvSize(mat->width,mat->height);
IplImage* imgBuf = cvCreateImage(size,IPL_DEPTH_8U,1);
cvConvert(mat,imgBuf);
cvNamedWindow(&quot;mat&quot;,CV_WINDOW_AUTOSIZE);
cvShowImage(&quot;image&quot;,mat);
cvWaitKey(0);
cvReleaseImage(&imgBuf);
}
也就是说你先将数组的值赋给Cvmat,再将cvmat经cvconvert转换为IplImage,再显示应该就ok了。[/quote:rdohzj27]

我之前就想过我CvMat,但没想到cvConvert()这个,按你说的改了,图像出来是反的,我用cvFlip(mat,mat,0);把它反过来了,效果还是不怎么样。还是有些黑边框出现,图片太小,不知道怎么放大?你的问题解决了吗?[/quote:rdohzj27]
解决了,问题出在对指针的理解不够深入。

    原文作者:xuexiaokkk
    原文地址: https://blog.csdn.net/xuexiaokkk/article/details/49835929
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞