Mat的初始化以及Mat与数组的相互转化

本文介绍了OpenCV中Mat类型数据的两种初始化方法:直接初始化和利用数组初始化,并提供了注意事项。此外,还详细讲解了Mat类型数据转换为数组的两种方式:通过ptr函数和at成员函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mat类型数据的初始化方法可以有以下两种:

1、直接初始化

Mat_<float> T_L = (Mat_<float>(3, 1) << -518.97666, 01.20629, 9.14632);
2、利用数组初始化
float A[4][3] = { 0 };
Mat A_mat = Mat(4, 3, CV_32F, A);//如果是double类型用64

  注意:初始化数组时常遇到“无法显示标识符”的提示,可能用了中文的逗号;

Mat转化为数组可以用以下两种方法:

1、Mat中提供ptr函数

    用ptr访问任意一行像素的首地址,然后当做指针来读取这一行的数据,适合一行一行的横向访问

Mat M1;
float* row1 = M1.ptr<float>(0);//获取第一行首地址
float b[4] = { 0 };
for(int i=0;i<4;i++)
{
  b[i]=row1[i];//第一行的第i个数赋给b[i]
}
2、使用Mat的成员函数at<>()

   直接给i,j赋值就可以随意访问图像中任何一个像素,其中j表示第j行,i表示该行第i个像素。如果访问所有的变量,效率很低。

M1.at<float>(2, 0)//第三行第一个元素的值

   




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值