OpenCV中IplImage图像格式与BYTE图像数据的转换
2015-11-02 20:08
543 查看
OpenCV中IplImage图像格式与BYTE图像数据的转换
IplImage* iplImage;
BYTE* data;
1 由IplImage*得到BYTE*图像数据:
data = iplImage->imageDataOrigin; //未对齐的原始图像数据
或者
data = iplImage->imageData; //已对齐的图像数据
2 由BYTE*得到IplImage*图像数据
iplImage = cvCreateImageHeader(cvSize(width,height),depth,channels);
cvSetData(iplImage,data,step);
首先由cvCreateImageHeader()创建IplImage图像头,制定图像的尺寸,深度和通道数;然后由
cvSetData()根据 BYTE*图像数据指针设置IplImage图像头的数据数据,其中step指定该IplImage图像
每行占的字节数,对于1通道的 IPL_DEPTH_8U图像,step可以等于width。
1,如果是从新创造一个Iplimage,则用IplImage* cvCreateImage( CvSize size, int depth, int
channels ),它创建头并分配数据。
注:当不再使用这个新图像时,要调用void cvReleaseImage( IplImage** image )将它的头和图像数
据释放!
2,如果有图像数据没有为图像头分配存储空间(即,没有为IplImage*指针分配动态存储空间),则
先调用IplImage* cvCreateImageHeader( CvSize size, int depth, int channels )创建图像头,再
调用void cvSetData( CvArr* arr, void* data, int step )指定图像数据,可以理解为将这个新图
像的数据指针指向了一个已存在的图像数据上,不存在图像数据存储空间的分配操作。
注:当不再使用这个新图像时,要调用void cvReleaseImageHeader( IplImage** image )将它的图像
头释放!
3,如果有图像数据也有图像头(用于IplImage为静态分配存储空间的情况),则先调用IplImage*
cvInitImageHeader( CvSize size, int depth, int channels )更改图像头,再调用void
cvSetData( CvArr* arr, void* data, int step )指定图像数据。
IplImage* iplImage;
BYTE* data;
1 由IplImage*得到BYTE*图像数据:
data = iplImage->imageDataOrigin; //未对齐的原始图像数据
或者
data = iplImage->imageData; //已对齐的图像数据
2 由BYTE*得到IplImage*图像数据
iplImage = cvCreateImageHeader(cvSize(width,height),depth,channels);
cvSetData(iplImage,data,step);
首先由cvCreateImageHeader()创建IplImage图像头,制定图像的尺寸,深度和通道数;然后由
cvSetData()根据 BYTE*图像数据指针设置IplImage图像头的数据数据,其中step指定该IplImage图像
每行占的字节数,对于1通道的 IPL_DEPTH_8U图像,step可以等于width。
1,如果是从新创造一个Iplimage,则用IplImage* cvCreateImage( CvSize size, int depth, int
channels ),它创建头并分配数据。
注:当不再使用这个新图像时,要调用void cvReleaseImage( IplImage** image )将它的头和图像数
据释放!
2,如果有图像数据没有为图像头分配存储空间(即,没有为IplImage*指针分配动态存储空间),则
先调用IplImage* cvCreateImageHeader( CvSize size, int depth, int channels )创建图像头,再
调用void cvSetData( CvArr* arr, void* data, int step )指定图像数据,可以理解为将这个新图
像的数据指针指向了一个已存在的图像数据上,不存在图像数据存储空间的分配操作。
注:当不再使用这个新图像时,要调用void cvReleaseImageHeader( IplImage** image )将它的图像
头释放!
3,如果有图像数据也有图像头(用于IplImage为静态分配存储空间的情况),则先调用IplImage*
cvInitImageHeader( CvSize size, int depth, int channels )更改图像头,再调用void
cvSetData( CvArr* arr, void* data, int step )指定图像数据。
相关文章推荐
- Apache Server 2.2 多站点域名转向配置文件
- 命令 mkdir
- poj 2186 Popular Cows
- CentOS6.7源码搭建LNMP平台
- linux常用命令touch,cat,tac,more,less,head,tail
- Crack JD.COM Shop Cart
- Linux 中mdelay() 与msleep()的区别
- opencv 漫水填充函数 floodFill 说明
- Windows远程到Linux
- keepalived构建LVS_DR和Nginx的高可用集群
- 内核oops分析
- 网站构建
- Linux下安装Nginx
- Linux系统下永久解决mysql存储中文问题
- bestcoder#58 Inversion 即 hdu5497 (树状数组维护逆序数)
- Hadoop回收站trash
- AVPlayer,AVAudioPlayer,语音合成
- OpenGL ES着色器语言之语句和结构体(官方文档第六章)内建变量(官方文档第七、八章)
- OpenCV函数速查
- Centos7安装mysql缺乏yum源怎么安装