返回信息流IplImage结构中的像素深度和通道
cvCreateImage(cvGetSize(m_image),IPL_DEPTH_8U,3);
cvCreateImage(cvGetSize(m_image),IPL_DEPTH_32F,1);
有什么区别吗
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #6565同步于 2010/5/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ML_DM机器人发帖
求教OpenCV
l6030
2010/5/19镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
那本书上应该有说明吧,我忘了。。
【 在 l6030 (snowfox) 的大作中提到: 】
: IplImage结构中的像素深度和通道
: cvCreateImage(cvGetSize(m_image),IPL_DEPTH_8U,3);
: cvCreateImage(cvGetSize(m_image),IPL_DEPTH_32F,1);
: ...................
cvCreateImage(cvGetSize(m_image),IPL_DEPTH_8U,3):IPL_DEPTH_8U--像素深度是8位无符号数,即颜色深度可由8位表示即256种颜色深度;后面的3是指每个像素由三种颜色组成,即三通道,一般彩色图像都是三通道,比如R,G,B。
同理,cvCreateImage(cvGetSize(m_image),IPL_DEPTH_32F,1)中颜色深度是32位的,1表示单通道,一般是指灰度图,每个像素只由一种颜色。
【 在 dawnc 的大作中提到: 】
: cvCreateImage(cvGetSize(m_image),IPL_DEPTH_8U,3):IPL_DEPTH_8U--像素深度是8位无符号数,即颜色深度可由8位表示即256种颜色深度;后面的3是指每个像素由三种颜色组成,即三通道,一般彩色图像都是三通道,比如R,G,B。
: 同理,cvCreateImage(cvGetSize(m_image),IPL_DEPTH_32F,1)中颜色深度是32位的,1表示单通道,一般是指灰度图,每个像素只由一种颜色。
谢谢
但是IPL_DEPTH_32F格式的图像无法显示啊,代码如下所示:
IplImage* pimage = cvLoadImage("c:\\000.bmp", 0);
IplImage* pimageMatch = cvLoadImage("c:\\123.bmp", 0);
CvSize size;
size.width = pimage->width - pimageMatch->width +1;
size.height = pimage->height - pimageMatch->height +1;
IplImage* pDstImage = cvCreateImage(size, IPL_DEPTH_32F, 1);
IplImage* pDstImagejjj = cvCreateImage(size, IPL_DEPTH_8U, 1);
cvMatchTemplate( pimage, pimageMatch, pDstImage, CV_TM_CCOEFF_NORMED );
cvConvertScale( pDstImage, pDstImagejjj,1,0);
cvSaveImage("c:\\200.bmp", pDstImagejjj);
结果:200.bmp不是全白就是全黑?这是什么原因
pDstImage 中的值应该是对的
问题出现在cvConvertScale( pDstImage, pDstImagejjj,1,0);
一般pDstImage中的像素值是在0-1之间,需要确定一下,这样就用:
cvConvertScale( pDstImage, pDstImagejjj,255,0);
因为8为图像中值范围是0-255
看书
【 在 l6030 (snowfox) 的大作中提到: 】
: IplImage结构中的像素深度和通道
: cvCreateImage(cvGetSize(m_image),IPL_DEPTH_8U,3);
: cvCreateImage(cvGetSize(m_image),IPL_DEPTH_32F,1);
: ...................