看他怎么”折腾“(三)

两讲介绍了如何遍历Mat的连续数据空间和不连续的数据空间,这两种方式相对都比较直接和粗暴,直接访问data字段。接下来介绍一些相对委婉和优雅的方式,今天来看看ptr模版函数的方式。



ptr模版函数是Opencv Mat类提供的一种访问数据的方式,基本使用方式大概如下:

  • mat.ptr<Vec3b>(row)

  • mat.ptr<Vec3b>(row, col)




OpenCV的Mat类提供的这种ptr模版函数的方式有两个比较明显的优点:

  1. 看起来比较直观,可读性较好;

  2. 如果出现错误,可以抛出异常,这样更加保证程序的健壮性。



来吧我猜你又想看下这段代码示例对不

for (int row = 0; row < mat.rows; row++)

{

for (int col = 0; col < mat.cols; col++)

{

Vec3b *c = mat.ptr<Vec3b>(row, col);

c->val[0] = 0;   //B

c->val[1] = 255; //G

c->val[2] = 0; //R

}

}



这段代码不用太多解释了,只说一下Vec3b,这是OpenCV自定义的一个数据结构,内部有3个uchar的成员,分别来表示B,  , R的值。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值