OpenCV中KdTree的用法

KdTree是一种非常好用的搜索算法。特别是在处理高维度数据时,仅通过KdTree进行近邻搜索,就能获取到不错的模糊搜索效果。

对于OpenCV这样的老牌优秀图像库,自然是提供了KdTree函数的。下面我们来通过一个小例子简单介绍下OpenCV中KdTree的用法。

这个例子的目的是输入一张图片,然后我们根据图片的内容,将其转换为ascii字符的形式输出。这就要求每一个ascii字符要建立一个图素,比如8x8像素的图素,或是16x16、32x32像素的图素等。我们通过OpenCV将ascii字符打印到一个i乘j的小图片上。其中i和j分别为图素的宽和高,一般i和j是相同的,比如都是8、16、32等。然后将该小图片转换为一维向量。最后将所有的图素一维向量组成一个矩阵,矩阵大小是m x n,m是行数即样本数,也即图素数,也即ascii字符数;相应的n为图素的像素数,也就是前文提到的i乘j。这个矩阵将会输入到KdTree中用来建立KdTree。建立好后,用户即可以通过该KdTree进行搜索。

先看一段代码。如下:

#include <iostream>
#include <fstream>
#include <opencv2/opencv.hpp>
#include <opencv2/flann.hpp>


cv::Mat char2Mat(uchar c, int width = 32, int height = 32, float scale = 1.0f, int fontFace = cv::FONT_HERSHEY_DUPLEX)
{
    cv::Size elemSize(width, height);
    cv::Mat elem(elemSize, CV_8UC1, cv::Scalar(0));

    int baseline = 0;
    std::string text;
    text += c;
    cv::Size textSize = cv::getTextSize(text, fontFace, scale, 1, &baseline);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值