OpenCV对不同图像深度的处理
来源:互联网 发布:然足下卜之鬼乎的句式 编辑:程序博客网 时间:2024/05/05 19:06
在处理一些需要图像相加运算的操作时,通常定义
IplImage* dst = cvCreateImage(cvGetSize(img),IPL_DEPTH_64F,img->nChannels);
当处理完成后,需要对原这个IPL_DEPTH_64F深度的图像进行显示的时候,就需要做一些转换。可以用cvScale()这个函数,这个函数主要是对图像做线性变换。如果不转换的话,可以发现显示的图像是全白的。这是由于IPL_DEPTH_64F类型的图片显示范围为[0,1]。
cvMinMaxLoc(dst, &m, &M, NULL, NULL, NULL);
cvScale(dst, dst, 1.0/(M-m), 1.0*(-m)/(M-m));//图像数据转换到[0,1]区间
这个时候就可以正常的显示图像了。当需要在不同深度的图像之间转换时,也可以用cvScale()这个函数。这个时候的转换,中间有个截断处理过程。比如IPL_DEPTH_64F到IPL_DEPTH_8U,就会把300转换到255。下面转一段别人总结的深度显示范围。
测试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保存。下面贴一段自己测试用的代码:
- OpenCV对不同图像深度的处理
- OpenCV对不同图像深度的处理
- 不同深度图像的处理
- OpenCV不同图像深度类型的理解
- OpenCV显示图像时,不同位深度的影响
- 【图像处理】对opencv的配置
- OpenCV对图像的光照归一化处理
- opencv 对图像处理的一些函数
- OpenCV对IplImage类中图像深度的理解
- opencv的图像处理
- OpenCV的图像处理
- OpenCV实现对图像的光照归一化处理
- OpenCV实现对图像的光照归一化处理
- Opencv对图像做腐蚀和膨胀处理的结果
- vim+python+OpenCV学习三 : 对图像的像素处理
- OpenCV笔记——图像不同位深度间的转换
- 用opencv对图像进行处理
- python 使用opencv 对图像mask处理
- 基于S3C2440的Linux内核移植和yaffs2文件系统制作
- mysql 优化
- NDSI LL定位之我见
- Whisper!
- QextSerialPort 多线程读写串口
- OpenCV对不同图像深度的处理
- ssh访问virtualbox中的ubuntu
- makefile 初步
- 第四章 - 字符串和格式化输入输出——printf()函数
- LPTSTR CString 相互转换
- 哪些需要重构?
- 用爱打印菱形
- 学习C++
- android工程中的R.java文件