c++ mat赋值_Mat 的几种初始化和赋值方法

本文介绍了将cv::Point3f和std::vector转换为cv::Mat的方法,包括使用cv::Mat_()、初始化时使用{}赋值以及通过std::vector直接转换。详细讨论了不同赋值方式下Mat对象的通道数、大小和类型,并给出了相应的代码示例。
摘要由CSDN通过智能技术生成

这几天用到了由cv::Point3f和std::vector到cv::Mat数据类型的转换。本质上就是换一下容器。今晚做个小总结。

由Point3f 到 Mat

有两种方法,一种使用cv::Mat_<:point3f>(),另一种是在声明时使用{}初始化。注意:第一种方法得到的Mat的数据类型的通道数不为1,需要使用reshape()函数,第二种方式得到的通道数为1。

由vector 到 Mat

比较简单的方法是在Mat声明时,使用{}初始化。或者使用cv::Mat(std::vector)进行赋值也可以。比较省心的是,OpenCV根据vector数据中的类型自动选择通道数与数据类型。

若为uchar, float, double, 则通道数则为1, 若为cv::Point2f, cv::Point3f,则通道数则为2, 3。

#include

#include

#include

int main()

{

//

// cv::Point --> cv::Mat 可以使用cv::Mat_<:point3f>, 或初始化时{}赋值

// vector --> cv:Mat 可以使用{}赋值

cv::Point3f v1(34.0f, 21.34f, 32.0f);

// 1. cv::Mat_<:point3f>

// 三种赋值方式可以实现由Point3f到Mat的转换, 但是通道数不是1

//cv::Mat m1 = cv::Mat_<:point3f>(v1);

cv::Mat m1{ cv::Mat_<:point3f>(v1) };

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值