OpenCV小技巧

快速对点序列进行运算

注意到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新)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值