12/16
15:14
IT OpenCV

OpenCV访问Mat数据

在c++用OpenCV访问Mat数据是一件很蛋疼的事情,难道功能强大到这点最基本的东西都要我折腾个半死(好几次bug是因为访问的类型不对,哎,入门菜鸟各种被欺负)?算了,上网搜了个统一的办法,以后都用这个好了。如果有改进的地方,希望提出来。

template<typename T>
T getMatPointValue(cv::Mat& src,int r,int c,int k=0)
{
    // visit the ith row ptr of Mat data
    T* curRow = (T*)src.ptr<T>(r);[......]

Read more

12/9
21:33
Computer Vision IT OpenCV

运动模型

1.     基础知识

在对物体进行跟踪时,我们需要建立一个模型来描述物体的状态。在假设物体为刚性的前提下,物体的运动状态可以由位移和旋转两个部分组成。假设在3D空间一个点由A一个四维向量表示:

A={\left[\begin{array}{cccc}x&y&z&1\end{array}\right]}^T

我们可以用变换矩阵M来对A进行旋转和平移变换:

A^{'}=MA

其中M表示如下:

$$!M= \left[\begin{array}{cccc}a_0 & b_0 & c_0 & w_0 \\a_1 &[......]

Read more

11/13
23:22
IT OpenCV

OpenCV输出KeyFrame数据到外存

做视频跟踪需要把一些关键帧的数据提取出来观察和处理,这样比较容易找出bug和优化代码。如果换作其他语言,这个功能其实可以直接用序列化来做,也就是直接把数据序列化到外存。但是C++语法没有支持序列化,所以查了一下opencv如何保存Mat结构的数据,发现可以使用FileStorage和FileNode、FileNodeIterator进行数据的持久化保存。废话少说,上代码:

首先先定义一下KeyFrame的数据结构:

class KeyFrame
{
    // 图像金字塔
    Mat KF_image[KF_LEVEL];
    // 姿态
    Pos[......]

Read more

10/20
11:50
Life

(补)图像检索的一个优化搜索算法

之前主机被DDOS攻击 ip恢复后文章丢失了 这里补上。

在图像检索中会遇到这样一个问题,就是给出一个query用一种度量方式(满足三角不等式)对整个数据库进行匹配,找出与之距离最大或者最小的向量。

之前的笨方法在这里都不好意思说了。。。可能是由于老师对复杂度的要求不高吧,所以我也懒得去优化,就是用暴力的方法一一求一遍  :meng: ,是不是有人开始鄙视博主了 :mrgreen: 。但是这种情况要是出现在现实应用中,是完全行不通的,海量数据时代怎么可能容许这么笨的方法存在。但是恰恰是平时没有注意,腾讯面试的时候竟然被问到了,结果语塞回答不出来。最近写论文又遇到这个问题,所以决定好好思考一[......]

Read more