opencv不同深度CvArr*(CvMat*,IplImage*)类型的显示
来源:互联网 发布:长视频软件 编辑:程序博客网 时间:2024/05/18 02:08
对于不同的图片深度,显示是有范围的
下面转一段别人总结的深度显示范围。
测试double型:0.0--1.0之间 IPL_DEPTH_64F
测试float型:0.0--1.0之间 IPL_DEPTH_32F
测试long型:0--65535之间 IPL_DEPTH_32S
测试short int型:-32768--32767之间 IPL_DEPTH_16S
测试unsigned short int型:0--65535之间 IPL_DEPTH_16U
测试char型:-128--127之间 IPL_DEPTH_8S
测试unsigned char型:0--255之间 IPL_DEPTH_8U
这个时候如果需要保存图像,请记住要先转换到IPL_DEPTH_8U的深度。因为只有8位单通道或者3通道(通道顺序为'BGR')才可以使用cvSaveImage保存。
用cvScale 或cvConvertScale(const CvArr* src, CvArr* dst, double scale=1, double shift=0) 来转换,cvConvertScale会将src转为dst,深度由dst决定,如果 scale=1,shift=0 就不会对src进行比例缩放.
同时图像的分辨率过大,Opencv的highgui套件的窗口显示只会显示溢满显示器的部分图片,剩下的将看不到,所以必须要使用cvResize改变图片大小来缩放显示。
显示不同深度和缩放的显示函数代码如下:
void ShowConvertImage(char name[200],IplImage* Image)
{
cvNamedWindow(name,1);
char savename[350];
sprintf(savename,"%s.jpg",name);
cvSaveImage(savename,Image);
if(Image->width<1280)
{
if(Image->depth!=IPL_DEPTH_8U)
{
IplImage* NormalizeImage=NULL;
NormalizeImage=cvCreateImage(cvGetSize(Image),IPL_DEPTH_8U,1);
cvConvertScale(Image,NormalizeImage,1,0);//将图转为0-256,用于图片显示,
cvShowImage(name,NormalizeImage);
cvReleaseImage(&NormalizeImage);
}
else
{
cvShowImage(name,Image);
}
}
else
{
IplImage* ImageResize=cvCreateImage(cvSize(1280,Image->height/(Image->width/1280)),Image->depth ,Image->nChannels);
cvResize(Image,ImageResize,1);
if(ImageResize->depth!=IPL_DEPTH_8U)
{
IplImage* NormalizeImage=NULL;
NormalizeImage=cvCreateImage(cvGetSize(ImageResize),IPL_DEPTH_8U,1);
cvConvertScale(Image,NormalizeImage,1,0);//将图转为0-256,用于图片显示,
cvShowImage(name,NormalizeImage);
cvReleaseImage(&NormalizeImage);
}
else
{
cvShowImage(name,ImageResize);
}
cvReleaseImage(&ImageResize);
}
}
- opencv不同深度CvArr*(CvMat*,IplImage*)类型的显示
- opencv不同深度CvArr*(CvMat*,IplImage*)类型的显示
- CvMat, Mat, IplImage, Cvarr类型
- OpenCV的CvArr, Mat, CvMat, IplImage, BYTE转换
- OpenCV的CvArr, Mat, CvMat, IplImage, BYTE转换 .
- opencv CvArr、Mat、CvMat、IplImage、BYTE之间的转换
- CvArr CvMat IplImage 三种数据类型
- CvArr, CvMat, IplImage关系
- CvMat, CvArr、Mat, IplImage
- OpenCV中:CvArr、CvMat、IplImage、cv::Mat和cv::InputArray的相关总结
- OpenCV Learning: CvArr、Mat、CvMat、IplImage、BYTE转换(总结而来)
- OpenCV Learning: CvArr、Mat、CvMat、IplImage、BYTE转换(总结而来)
- OpenCV中 CvArr、Mat、CvMat、IplImage、BYTE转换(总结而来)
- opencv 数据类型转换:CvArr, Mat, CvMat, IplImage, BYTE
- CvArr、Mat、CvMat、IplImage、转换
- OpenCV里的CvArr, CvMat, IplImag
- CvArr、Mat、CvMat、IplImage、BYTE之间的转换
- CvMat、 CvArr、Mat、IplImage和Mat之间的相互转换
- KMP算法
- java提高篇-----Iterator
- Curious Robin Hood
- Linux解压缩*.tar.gz命令
- 紫专妆啄滋咨孜浊棕踪滓罪组租淄姿遵祝
- opencv不同深度CvArr*(CvMat*,IplImage*)类型的显示
- 控制cellEditor是否为可编辑
- 约瑟夫环
- python的测试框架
- 计算两个日期之间天数
- 图像基本原理
- zabbix中文配置指南
- hdoj 2586 How far away ? 【Tarjan离线LCA】
- 一些小技能