OpenCV4Android 特征点提取演示

OpenCV4Android 特征点提取演示



前面通过两天的时间,也只是熟悉了基本的环境搭建,明确了基本的部件流程,接下来需要熟悉API,进行实际的应用编程。本篇尝试获取图片的SIFT特征点,并学习相应的API及图像处理基本知识。

目标:

- 定义Native method 接口

- Bitmap 和 opencv Mat 之间的转换

- 通过org.opencv.core.Mat.getNativeObjAddr()把地址传递给底层的C++代码处理,然后更新对应地址的对象

关键代码

Android中的事件处理:

    btn_feature_detect.setOnClickListener(new Button.OnClickListener() {

            @Override
            public void onClick(View v) {
                int width = bitmap.getWidth();
                int height = bitmap.getHeight();
                Mat mRgba = new Mat(height, width, CvType.CV_8U, new Scalar(4));
                Mat mGray = new Mat(height, width, CvType.CV_8U, new Scalar(4));
                Mat output = new Mat();

                Utils.bitmapToMat(bitmap, mRgba);

                // do sth
                // Converts an image from one color space to another.
                Imgproc.cvtColor(mRgba, mGray, Imgproc.COLOR_RGB2GRAY, 4);

                NativeUtil.detectFeatures(mGray.getNativeObjAddr(), mRgba.getNativeObjAddr(), output.getNativeObjAddr());

                // Then convert the processed Mat to Bitmap
                Bitmap resultBitmap = Bitmap.createBitmap(output.cols(),
                        output.rows(), Bitmap.Config.ARGB_8888);

                Utils.matToBitmap(output, resultBitmap);

                imageFeatureView.setImageBitmap(resultBitmap);
            }
        });

C++中利用opencv的处理:

JNIEXPORT void JNICALL Java_com_example_test_NativeUtil_detectFeatures(
        JNIEnv *env, jclass thiz, jlong mGrayAddr, jlong mRgbaAddr, jlong mOutputAddr) {
    Mat* pMatGr=(Mat*)mGrayAddr;
    Mat* pMatRgb=(Mat*)mRgbaAddr;
    Mat* pMatDesc=(Mat*)mOutputAddr;
    vector<KeyPoint> v;

    //OrbFeatureDetector detector(50);
    OrbFeatureDetector detector;
    OrbDescriptorExtractor extractor;
    detector.detect(*pMatGr, v);
    drawKeypoints(*pMatGr, v, *pMatDesc);
}

运行效果

点击按钮后,提取该图片的features:



参考:

1.opencv ORB

2.Drawing Function of Keypoints and Matches

3.OpenCV Tutorial 2: Mixed Processing

4.Feature Description

5.Feature Detection and Description

时间: 2024-10-20 20:11:57

OpenCV4Android 特征点提取演示的相关文章

压缩跟踪(CT)代码详细学习_模块2(特征的提取和计算)

0.下载安装Opencv,当前版本为249. 1.下载Python,当前OPencv版本为249,不过其支持的最新版本的Python为2.7,所以可以下载276版本. 2.下载numpy,开始我使用了1.6,没有通过,错误如图.下载了最新的1.8.1版本. 3.将Opencv安装目录下opencv\build\python\2.7\x86中的cv2.pyd复制到python安装目录Lib\site-packages下. 4.找到opencv源文件内的draw.py运行. 压缩跟踪(CT)代码详细

特征点提取之Harris角点提取法

1. 特征点提取的意义 2.角点 3. Harris角点检測的基本原理 4.Harris角点检測算法的步骤 5.Harris角点提取算法设计 <span style="font-size:18px;">function [ptx,pty] = HarrisPoints(ImgIn,threshold) % Harris角点提取算法 %计算图像亮度f(x,y)在点(x,y)处的梯度----------------------------------------- fx = [

第二篇:使用Spark对MovieLens的特征进行提取

前言 在对数据进行了初步探索后,想必读者对MovieLens数据集有了感性认识.而在数据挖掘/推荐引擎运行前,往往需要对数据预处理.预处理的重要性不言而喻,甚至比数据挖掘/推荐系统本身还重要. 然而完整的数据预处理工作会涉及到:缺失值,异常值,口径统一,去重,特征提取等等等等,可以单写一本书了,本文无法一一介绍. 本文仅就特征提取这一话题进行粗略讨论并展示. 类别特征提取 在很多场景下,数据集的很多特征是类型变量,比如MovieLens里面的职业类型.这样的变量无法作为很多算法的输入,因为这类变

SIFT特征点提取

一. SIFT算法 1.算法简介 尺度不变特征转换即SIFT (Scale-invariant feature transform)是一种计算机视觉的算法.它用来侦测与描述影像中的局部性特征, 它在空间尺度中寻找极值点,并提取出其位置.尺度.旋转不变量,此算法由 David Lowe在1999年所发表,2004年完善总结. 其应用范围包含物体辨识.机器人地图感知与导航.影像缝合.3D模型建立.手势辨识.影像追踪和动作比对. 局部影像特征的描述与侦测可以帮助辨识物体,SIFT特征是基于物体上的一些

语音特征的提取

一.语音特征 对于语音识别来说,好的语音特征应该: 包含区分音素的有效信息:良好的时域分辨率,良好的频域分辨率: 分离基频F0以及它的谐波成分: 对不同说话人具有鲁棒性: 对噪音或信道失真具有鲁棒性: 有着良好的模式识别特性:低维特征,特征独立(GMM需,NN无需). 二.提取MFCC特征的整体流程 三.提取MFCC特征 (一)A/D转换(采样) (二)预加重 为消除声门激励.口鼻辐射.传播时高频衰减更大的影响. (三)加窗 长帧窗对应窄带语谱图,时域分辨率低,频域分辨率高,语谱图线条横向明显:

OpenCV中特征点提取和匹配的通用方法

OpenCV在新版本中把很多C语言的代码都重新整理成了C++代码,让我们在使用的时候更加方便灵活.其中对于特征点的提取和匹配,充分体现了C++的强大.下面直接用例子来说明.假设我们有两幅图:1.bmp和2.bmp,要从中提取体征点并匹配,代码如下: // Load image from file IplImage *pLeftImage = cvLoadImage("1.bmp", CV_LOAD_IMAGE_GRAYSCALE);IplImage *pRightImage = cvL

使用Opencv2.4.9进行SIFT特征点提取和匹配

主要使用的类:FeatureDetector FeatureExtractor FeatureMatcher#include <opencv2/core/core.hpp> ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 <em id="__mceDel">

Opencv 各种特征点提取和匹配

opencv 特征点的提取和匹配 1. 当中的数据结构 KeyPoint这数据结构中有如下数据结构: class KeyPoint { Point2f pt; //坐标 float size; //特征点邻域直径 float angle; //特征点的方向,值为[零,三百六十),负值表示不使用 float response; int octave; //特征点所在的图像金字塔的组 int class_id; //用于聚类的id angle:角度,表示关键点的方向,SIFT算法通过对关键点周围邻域

图像特征的提取

1.  HOG特征 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和统计图像局部区域的梯度方向直方图来构成特征.Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功. 主要思想:--获取轮廓信息 在一副图像中,局部目标的表象和形状(appearance and shape)能够被梯度或边缘的方向密度分布很好地描述.(本质:梯度的统计信息,而梯度主要