首先是下面代码中将要使用的 r
矩阵的定义。需要注意,我们可以通过用 randu
函数产生的随机值来填充矩阵, 需要给定一个上限和下限来确保随机值在期望的范围内。
Mat r = Mat(2, 3, CV_8UC3);
randu(r, Scalar::all(0), Scalar::all(255));
1. OpenCV 默认格式
cout << "r [默认风格]is "<< endl << r << endl;
输出格式如下:
r [默认风格]is
[ 91, 2, 79, 179, 52, 205, 236, 8, 181;
239, 26, 248, 207, 218, 45, 183, 158, 101]
2. Python 格式
// OpenCV3 以上版本
cout << "r [Python风格]is "<< endl << format(r, Formatter::FMT_PYTHON)<< endl;
// OpenCV2 版本
cout << "r [Python风格]is "<< endl << format(r, "python")<< endl;
输出格式如下:
r [Python风格]is
[[[ 91, 2, 79], [179, 52, 205], [236, 8, 181]],
[[239, 26, 248], [207, 218, 45], [183, 158, 101]]]
3. CSV 格式
// OpenCV3 以上版本
cout << "r [逗号风格]is "<< endl << format(r, Formatter::FMT_CSV)<< endl;
// OpenCV2 版本
cout << "r [逗号风格]is "<< endl << format(r, "csv")<< endl;
输出结果:
r [逗号风格]is
91, 2, 79, 179, 52, 205, 236, 8, 181
239, 26, 248, 207, 218, 45, 183, 158, 101
4. NumPy 格式
// OpenCV3 以上版本
cout << "r [Numpy风格]is "<< endl << format(r, Formatter::FMT_NUMPY)<< endl;
// OpenCV2 版本
cout << "r [Numpy风格]is "<< endl << format(r, "numpy")<< endl;
输出结果:
r [Numpy风格]is
array([[[ 91, 2, 79], [179, 52, 205], [236, 8, 181]],
[[239, 26, 248], [207, 218, 45], [183, 158, 101]]], dtype='uint8')
5. C 语言格式
// OpenCV3 以上版本
cout << "r [C 语言风格]is "<< endl << format(r, Formatter::FMT_C)<< endl;
// OpenCV2 版本
cout << "r [C 语言风格]is "<< endl << format(r, "C")<< endl;
输出结果:
r [C 语言风格]is
{ 91, 2, 79, 179, 52, 205, 236, 8, 181,
239, 26, 248, 207, 218, 45, 183, 158, 101}
6. 完整代码
#include <iostream>
#include "opencv2/opencv.hpp"
using namespace cv;
using namespace std;
int main()
{
Mat r = Mat(2, 3, CV_8UC3);
randu(r, Scalar::all(0), Scalar::all(255));
cout << "r [默认风格]is "<< endl << r << endl;
cout << "r [Python风格]is "<< endl << format(r, Formatter::FMT_PYTHON)<< endl;
cout << "r [逗号风格]is "<< endl << format(r, Formatter::FMT_CSV)<< endl;
cout << "r [Numpy风格]is "<< endl << format(r, Formatter::FMT_NUMPY)<< endl;
cout << "r [C 语言风格]is "<< endl << format(r, Formatter::FMT_C)<< endl;
return 0;
}