博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mat 的几种初始化和赋值方法
阅读量:5300 次
发布时间:2019-06-14

本文共 2023 字,大约阅读时间需要 6 分钟。

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

Point3fMat

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

vector<float>Mat

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

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

#include 
#include
#include
int main(){ // // cv::Point --> cv::Mat 可以使用cv::Mat_
, 或初始化时{}赋值 // vector
--> cv:Mat 可以使用{}赋值 cv::Point3f v1(34.0f, 21.34f, 32.0f); // 1. cv::Mat_
// 三种赋值方式可以实现由Point3f到Mat的转换, 但是通道数不是1 //cv::Mat m1 = cv::Mat_
(v1); cv::Mat m1{ cv::Mat_
(v1) }; //cv::Mat_
(v1).assignTo(m1); std::cout << "m1: " << m1 << "\tchannels: " << m1.channels() << "\tsize(width x height): " << m1.size() << "\n"; m1 = m1.reshape(1); std::cout << "m1: " << m1 << "\tchannels: " << m1.channels() << "\tsize(width x height): " << m1.size() << "\n"; // 2. cv::Mat{v1} cv::Mat m2{ v1 }; //cv::Mat m2; //m2 = cv::Mat(v1); //cv::Mat(v1).copyTo(m2); std::cout << "m2.t(): " << m2.t() << "\tchannels: " << m2.channels() << "\tsize(width x height): " << m2.size() << "\n"; // 3. vector<*> --> Mat 自动选择类型 std::vector
vec{ 21.3, -10, 34.0, 3.2, 3.4 }; cv::Mat m3{ vec }; std::cout << "m3.t(): " << m2.t() << "\tchannels: " << m3.channels() << "\tsize(width x height): " << m3.size() << "\ttype: " << m3.type() << "\n" ; std::vector
uvec{ 2, 9, 29 }; cv::Mat m4{ uvec }; std::cout << "m4.t(): " << m4.t() << "\tchannels: " << m4.channels() << "\tsize(width x height): " << m4.size() << "\ttype: " << m4.type() << "\n"; std::vector
vecpts{ cv::Point2f(2.3, 3.1), cv::Point2f(9.3, -10.0) }; cv::Mat m5{ vecpts }; std::cout << "m5: " << m5 << "\tchannels: " << m5.channels() << "\tsize(width x height): " << m5.size() << "\ttype: " << m5.type() << "\n"; return 0;}

运行结果如图:

910605-20181016210151035-77701757.png

转载于:https://www.cnblogs.com/zi-wang/p/9800640.html

你可能感兴趣的文章
7、学习大数据笔记-hadoop fs 命令
查看>>
Vue路由的实现原理
查看>>
Spring Boot教程(5) – 模板引擎
查看>>
使用maven搭建ssm框架环境
查看>>
docker安装配置gitlab时的常用命令整理
查看>>
二丶Python字符串1
查看>>
七丶Python字典
查看>>
一丶Python简介
查看>>
Mysql基础知识
查看>>
常用的分析方法有哪些?
查看>>
Excel-图表制作
查看>>
Excel 日期和时间函数
查看>>
面对问题,如何去分析?(流失问题)
查看>>
Excel 文本函数
查看>>
电商数据分析总结
查看>>
Excel-信息函数&数组公式
查看>>
Excel-基本操作
查看>>
面对问题,如何去分析?(分析套路)
查看>>
Excel-逻辑函数
查看>>
面对问题,如何去分析?(日报问题)
查看>>