Buffer转OpenCV格式

   Buffer指的是unsigned char* 类型的图片内容(像素值),将Buffer转为openCV的格式,便于查看和保存,用来进行中间步骤的观察和调试。

1.opencv 1.0版本

uchar* 数据指针转为 IplImage类型

Buffer 为uchar* 类型,height ,width提前知道。

彩图的size用width 和 height,但是在cvSetData里面要使用跨度stride。

所谓跨度,在opencv里面用step表示,指得是图像一行真实的存储单元,按理说对灰度图而言,每个像素就是一个存储单元,跨度就等于宽度。对彩色图像而言,一个像素对应RGB三个值,有三个存储单元,因此跨度是宽度的三倍,但事实上很多图像格式为了读取的需要,往往跨度是8的倍数,就在宽度的三倍基础上再补齐到8的倍数。

计算公式如下:

u16stride = (u16Width * 24 + 31)/32 * 4;

注意,在opencv中,跨度似乎是16的倍数,未验证,说明在遇到跨度问题时,要注意对于跨度的具体定义。

 

IplImage* src = cvCreateImage(cvSize(Width,Height), IPL_DEPTH_8U, 3);
cvSetData(src ,Buffer,Stride);	
cvShowImage("Buffer",src );

 

2. opencv 2 以上版本

Mat结构体

新版本转换如下

cv::Mat src(Height, Width, CV_8UC3 ,Buffer,stride);
imshow("Buffer",src);


 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值