
/*
* cvout_sample 只是演示了 cv::Mat 的序列化输出能力。
* 也就是说,现在可以这样使用:cv::Mat M(...); cout << M;。
*/
#include "opencv2/core.hpp" // 包含OpenCV核心功能的头文件
#include <iostream> // 包含标准输入输出流的头文件
// 使用标准和OpenCV命名空间中的名字,避免每次调用时都要加前缀
using namespace std;
using namespace cv;
// 帮助信息的函数
static void help(char** argv)
{
cout
<< "\n------------------------------------------------------------------\n"
<< " This program shows the serial out capabilities of cv::Mat\n"
<< "That is, cv::Mat M(...); cout << M; Now works.\n"
<< "Output can be formatted to OpenCV, matlab, python, numpy, csv and \n"
<< "C styles Usage:\n"
<< argv[0]
<< "\n------------------------------------------------------------------\n\n"
<< endl;
}
// 程序的主入口点
int main(int argc, char** argv)
{
cv::CommandLineParser parser(argc, argv, "{help h||}"); // 创建命令行解析器
if (parser.has("help")) // 如果用户请求帮助
{
help(argv); // 显示帮助信息
return 0; // 退出程序
}
Mat I = Mat::eye(4, 4, CV_64F); // 创建一个4x4的双精度单位矩阵
I.at<double>(1,1) = CV_PI; // 将第1行第1列的元素设为π
c