【OpenCV3】cv::Mat的定义与初始化
生活随笔
收集整理的這篇文章主要介紹了
【OpenCV3】cv::Mat的定义与初始化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
cv::Mat是OpenCV2和OpenCV3中基本的數據類型,在cv::Mat類中,關于cv::Mat的定義和初始化有多種不同的形式,這里,將對其進行詳盡的總結和介紹。
一、無數據拷貝的cv::Mat的定義和初始化
1、默認形式
cv::Mat m;
2、指定類型和大小(行列)的二維數組
cv::Mat m(int rows, int cols, int type);
3、有初始化值的指定類型和大小(行列)的二維數組
cv::Mat m(int rows, int cols, int type, const Scalar& s);
4、使用預先存在數據定義的指定類型和大小(行列)的二維數組
cv::Mat m(int rows, int cols, int type, void* data, size_t step = AUTO_STEP);
5、指定大小(size)和類型的二維數組
cv::Mat m(cv::Size sz, int type, const Scalar& s);
6、使用預先存在的數據定義的指定大小(size)和類型的二維數組
cv::Mat m(cv::Size sz, int type, void* data, size_t step = AUTO_STEP);
7、指定類型的多維數組
cv::Mat m(int ndims, const int* sizes, int type);
8、有初始化值的指定類型多維數組 cv::Mat m(int ndims, const int* sizes, int type, const Scalar& s);
9、使用預先存在的數據定義的指定類型的多維數組 cv::Mat m(int ndims, const int* sizes, int type, void* data, size_t step = AUTO_STEP);
二、從其他cv::Mat進行數據拷貝的定義和初始化
1、拷貝構造形式
cv::Mat m(const cv::Mat& mat);
2、指定行列范圍的拷貝構造
cv::Mat m(const cv::Mat& mat, const cv::Range& rows, const cv::Range& cols);
3、指定ROI的拷貝構造
cv::Mat m(const cv::Mat& mat, const cv::Rect& roi);
4、使用多維數組中指定范圍內的數據的拷貝構造
cv::Mat(const cv::Mat& mat, const cv::Range* ranges);
1、使用cv::Vec定義相同類型、大小為n的一維數組
cv::Mat m(const cv::Vec<T, n>& vec, bool = copyData = true);
2、使用cv::Matx定義相同類型、大小為mxn的二維數組
cv::Mat(const cv::Matx<T, m, n>& vec, bool copyData = true);
3、使用STL vector定義相同類型的一維數組
cv::Mat(const std::vector<T>& vec, bool copyData = true);
四、直接使用靜態函數創建cv::Mat
1、使用zeros()函數定義指定大小和類型的cv::Mat(全為0)
cv::Mat m = cv::Mat::zeros(int rows, int cols, int type);
2、使用ones()函數定義指定大小和類型的cv::Mat(全為0)
cv::Mat m = cv::Mat::ones(int rows, int cols, int type);
3、使用eye()函數定義指定大小和類型的cv::Mat(恒等矩陣)
cv::Mat m = cv::Mat::eye(int rows, int cols, int type);
總結
以上是生活随笔為你收集整理的【OpenCV3】cv::Mat的定义与初始化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【算法+OpenCV】图像极坐标变换及基
- 下一篇: 【OpenCV3】cv::Mat块访问与