快速对点序列进行运算
注意到Mat类有一个构造函数
Mat::Mat(const vector<T>& vec, bool copyData=false)
于是可以
vector<Point2f> corners
Mat cornersMat(corners);
cornersMat *= scale;
这样在不拷贝数据的前提下,对每个点坐标进行了运算
format函数
string format(const char* fmt, ...)
提供了类似sprintf的功能,返回标准C++字符串
FileStorage类可以将参数和数据存储为XML或YAML文件
直接用<<写入key-value对
Mat cameraMatrix = (Mat_<double>(3,3) << 1000, 0, 320, 0, 1000, 240, 0, 0, 1);
Mat distCoeffs = (Mat_<double>(5,1) << 0.1, 0.01, -0.001, 0, 0);
fs << "cameraMatrix" << cameraMatrix << "distCoeffs" << distCoeffs;
用[] {} 表示序列
fs << "{" << "x" << x << "y" << y << "lbp" << "[";
for( int j = 0; j < 8; j++ )
fs << ((lbp >> j) & 1);
fs << "]" << "}";
得到
{ x:167, y:49, lbp:[ 1, 0, 0, 1, 1, 0, 1, 1 ] }
读取时,使用>>及FileNode类
fs2["cameraMatrix"] >> cameraMatrix2;
FileNode features = fs2["features"];
std::vector<uchar> lbpval;
// iterate through a sequence using FileNodeIterator
for(FileNodeIterator it = features.begin() ; it != features.end(); ++it)
{
cout << "x=" << (int)(*it)["x"] << ", y=" << (int)(*it)["y"];
(*it)["lbp"] >> lbpval;
}
视频中的背景剔除
BackgroundSubtractorMOG高斯混合模型
BackgroundSubtractorMOG2 像素块自适应高斯混合模型
BackgroundSubtractorGMG贝叶斯模型(3.x新)