OpenCV中IplImage和单字节char*的相互转换

从 IplImage到 char* :
data = image->imageData //对齐的图像数据或者data = image->imageDataOrigin //未对齐的原始图像数据
从 char* 到 IplImage:
image =cvCreateImageHeader(cvSize(width,height), depth, channels);
cvSetData(image, data, step);

step指定IplImage图像每行占的字节数。需要注意是,在释放空间时不能直接使用cvReleaseImage,而需cvReleaseImageHeader,然后再delete data,这也是OpenCV里边“自己管理内存”的思想。

IplImage有两个属性非常值得关注,稍不留神就会导致错误:一是width属性;二是widthStep属性。前者是表示图像的每行像素数,后者指表示存储一行像素需要的字节数。

 IplImage *img=cvLoadImage(m_strfile,0);int height,widht,step,channel;height=img->height;widht=img->width;step=img->widthStep;channel=img->nChannels;

可以看出IplImage的widthStep并不等于width*channel,它是4字节对齐的。

举例:图像灰度化

//Width-图像宽
//Height-图像高
//pData-输入图像数据指针(DIB)
//lineByteIn-输入图像每行字节数
//pDataOut-输出图像数据指针
IplImage *img= cvCreateImageHeader(cvSize(Width,Height),IPL_DEPTH_8U,3);
cvSetData(img,pData,lineByteIn);
IplImage *des_gray=cvCreateImage(cvGetSize(img),img->depth,1);
cvCvtColor(img,des_gray,CV_RGB2GRAY);
memcpy(pDataOut,des_gray->imageData,des_gray->widthStep*des_gray->height);
cvReleaseImageHeader(&img);
cvReleaseImage(&des_gray);

【OpenCV】IplImage和char *的相互转换,以及极易忽视的细节相关推荐

  1. Hobject 与 OpenCV IplImage 和 Mat 的相互转换

  2. 【转】OpenCV里IplImage数据结构极易出错的问题,IplImage和单字节char*的相互转换

    http://blog.csdn.net/liuyi1985/article/details/2174328 http://blog.csdn.net/liuyi1985/article/detail ...

  3. OpenCV中IplImage和单字节char*的相互转换

    已知 IplImage* image 和 char* data 从 IplImage 到 char* : data = image->imageData //对齐的图像数据 或者 data =  ...

  4. HObject,unsigned char的相互转换

    **HObject,unsigned char的相互转换** 一.unsigned char*转HObject unsigned char* pFrameBuf; HObject ho_Image: ...

  5. 线代[2]|对极易混淆概念的梳理—线性相关与线性无关、极大线性无关部分组与秩与基础解系、向量空间的基与维数

    原创首发于CSDN,转载请注明出处(CSDN:古希腊的汉密士),谢谢! 文章目录 一般形式的线性方程组 线性相关与线性无关 线性极大无关部分组与秩与基础解系 |齐次线性方程组的解 向量空间的基与维数 ...

  6. 极易广告投放平台v9灰黑色模版源码/广告联盟平台源码

    正文: 完整标题: 广告联盟平台 极易一站式广告投放平台v9灰黑色高档网站模版源码 有需要的自行去体验吧. 程序: wwnefs.lanzouq.com/ir0TB0a3a78j 图片:

  7. FPGA极易入门教程----工具篇(2)Quartus II 的在线调试工具 In-System Sources and Probes(ISSP)

    1.什么是ISSP?ISSP有什么用? Quartus II提供了In-System Sources and Probes Editor调试工具,通过JTAG接口使用该工具可以驱动和采样内部节点的逻辑 ...

  8. FPGA极易入门教程----汇总篇(直达链接)

    为什么要写这个系列? 根据费曼学习法,最好的学习方法就是教会一个外行人(初学者).知识分享,独乐乐不如众乐乐.现在FPGA市场巨大,人才缺口很大.我本着能拉一个上贼船就拉一个上贼船的想法来写这个系列文 ...

  9. python基础教程:易忽视知识点小结

    这篇文章主要介绍了Python易忽视知识点,实例分析了Python中容易被忽视的常见操作技巧,需要的朋友可以参考下 这里记录Python中容易被忽视的小问题 一.input(-)和raw_input( ...

最新文章

  1. php static method,php 类方法用static::hello(); 等同于 $this-hello();吗?
  2. 配置本地及网络yum源(详细步骤)
  3. 安利几个优质NLP开源项目!搜索、问答、情感分析…
  4. 并发服务器模型——多线程服务器
  5. 公司这个月要同时完成好多项目!!!
  6. (16)FPGA面试题MOORE 与 MEELEY状态机
  7. matplotlib scale 刻度
  8. DPDK 16.04/16.11.2 默认tx offload是关闭的引起tx vlan offload无效
  9. 一个人如果不学习,30岁就死了,活着的只是重复和应付
  10. delphi2007 注册码
  11. 浅谈JAVA项目开发
  12. 手机开热点但是电脑一直连接不上_电脑连接不上手机热点解决办法
  13. html 导航栏颜色代码,CSS实现五颜六色按钮组成的导航条效果代码
  14. 你知道微服务如何拆分,能解决哪些问题?
  15. 解决[Vue warn]: Unknown custom element: <ag> - did you register the component correctly? For recursive
  16. Android之ListView展示多类型的条目
  17. OutputStreamWriter的基本使用
  18. Java中对excle的一些操作
  19. 通过PowerShell管理Office 365的网站
  20. bug缺陷管理流程及等级划分

热门文章

  1. CQUOJ月赛(5月)H题:zzblack与斐波那契数列
  2. [高光谱] Hyperspectral-Classification Pytorch 的高光谱场景的通用类 HyperX
  3. Airflow集成在线编写创建dag的插件
  4. 图像处理十:图像反色
  5. 微波网络插入反射系数与输入反射系数
  6. SpringMVC XXX-servlet.xml ApplicationContext.xml
  7. ThinkPHP5 ajax传值到后台进行处理(验证是否含有某段字符串、截取字符串、字符串转数组)...
  8. Nginx篇--解读nginx配置
  9. 华为交换机基本配置命令
  10. 普元云计算-云计算平台项目团队组织架构与缘起