opencv 特征点提取算法 SIFT SURF ORB FAST LBP学习(二)
来源:互联网 发布:python自动化测试虫师 编辑:程序博客网 时间:2024/05/21 17:50
demo: http://download.csdn.net/detail/keen_zuxwang/9852587
MainActivity.java:
...public int doFeatureDetect(int detect_type) { int length0, length1; Mat img_object = new Mat(); Mat img_scene = new Mat(); Utils.bitmapToMat(bt1, img_object); Utils.bitmapToMat(bt2, img_scene); /* FAST = 1, STAR = 2, SIFT = 3, SURF = 4, ORB = 5, MSER = 6, GFTT = 7, HARRIS = 8, SIMPLEBLOB = 9, DENSE = 10, BRISK = 11, GRIDRETECTOR = 1000, */ //-- Step 1: Detect the keypoints using SURF Detector FeatureDetector detector; String str_detect; Log.i("Feature", " detect_type = "+detect_type); switch(detect_type){ case 1: detector = FeatureDetector.create(FeatureDetector.FAST); // ok str_detect = "FAST"; break; case 2: detector = FeatureDetector.create(FeatureDetector.STAR); // ok str_detect = "STAR"; break; case 3: detector = FeatureDetector.create(FeatureDetector.SIFT); str_detect = "SIFT"; break; case 4: detector = FeatureDetector.create(FeatureDetector.SURF); str_detect = "SURF"; break; case 5: detector = FeatureDetector.create(FeatureDetector.ORB); // ok str_detect = "ORB"; break; case 6: detector = FeatureDetector.create(FeatureDetector.MSER); str_detect = "MSER"; break; case 7: detector = FeatureDetector.create(FeatureDetector.GFTT); str_detect = "GFTT"; break; case 8: detector = FeatureDetector.create(FeatureDetector.HARRIS); // ok str_detect = "HARRIS"; break; case 9: detector = FeatureDetector.create(FeatureDetector.SIMPLEBLOB); str_detect = "SIMPLEBLOB"; break; case 10: detector = FeatureDetector.create(FeatureDetector.DENSE); str_detect = "DENSE"; break; case 11: detector = FeatureDetector.create(FeatureDetector.BRISK); str_detect = "BRISK"; break; case 12: detector = FeatureDetector.create(FeatureDetector.GRIDRETECTOR); str_detect = "GRIDRETECTOR"; break; default: detector = FeatureDetector.create(FeatureDetector.FAST); str_detect = "FAST"; break; } MatOfKeyPoint keypoints_object = new MatOfKeyPoint(); MatOfKeyPoint keypoints_scene = new MatOfKeyPoint(); detector.detect(img_object, keypoints_object); detector.detect(img_scene, keypoints_scene); KeyPoint[] obj_item0 = keypoints_object.toArray(); KeyPoint[] obj_item1 = keypoints_scene.toArray(); length0 = obj_item0.length; length1 = obj_item1.length; Log.i("Feature", " length0 = "+length0+", length1 = "+length1); for( int i = 0; i < length0; i++ ) { //-- Get the keypoints Point pts = obj_item0[i].pt; Core.rectangle(img_object, new Point(pts.x-5, pts.y-5), new Point(pts.x+5, pts.y+5), new Scalar(0, 255, detect_type*20), 2); } for( int i = 0; i < length1; i++ ) { //-- Get the keypoints Point pts = obj_item1[i].pt; Core.rectangle(img_scene, new Point(pts.x-5, pts.y-5), new Point(pts.x+5, pts.y+5), new Scalar(0, 255, detect_type*20), 2); } bt3 = Bitmap.createBitmap(img_object.cols(), img_object.rows(), Config.RGB_565); Utils.matToBitmap(img_object, bt3); iv0.setImageBitmap(bt3); bt4 = Bitmap.createBitmap(img_scene.cols(), img_scene.rows(), Config.RGB_565); Utils.matToBitmap(img_scene, bt4); iv1.setImageBitmap(bt4); Log.w("Feature"," FeatureDetector \n"); return 1; }..
JNI:
orbhog.cpp
JNIEXPORT jlong JNICALL Java_com_example_orbhog_MainActivity_doHarris(JNIEnv *env, jclass clz, jlong imageGray){ int win_size=15;//10; int r=3; int count=0; const int MAX_COUNT=500; // 500 double quality=0.01; double min_distance= 15;//10; CvPoint2D32f *points[2]={0,0}; points[1]=(CvPoint2D32f*)cvAlloc(MAX_COUNT*sizeof(points[0][0])); Mat pImg = Mat(*(Mat*)imageGray); IplImage temp_src = pImg; IplImage* imageg = &temp_src; IplImage* grey=cvCreateImage(cvSize(imageg->width, imageg->height), IPL_DEPTH_8U, 1); cvCvtColor(imageg, grey, CV_BGR2GRAY); // 1、灰度图 //goodFeaturesToTrack(pGray, features, maxCount, qLevel, minDist); //automatic initialization IplImage* eig=cvCreateImage(cvGetSize(grey),32,1); IplImage* temp=cvCreateImage(cvGetSize(grey),32,1); count=MAX_COUNT; cvGoodFeaturesToTrack(grey, eig, temp, points[1], &count, quality, min_distance, 0, 3, 0, 0.04); //读取第一帧影像 //能够将角点位置精确到亚像素级精度,提取易于跟踪的特征点,特征点精确描述 cvFindCornerSubPix(grey, points[1], count, cvSize(win_size,win_size), cvSize(-1,-1), // cvSize(1,1)就表示成忽略掉相邻1个像素 cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03)); //迭代次数iteration最小精度epsilon for(int i=0;i<count;i++){ cvRectangle(imageg, cvPoint(points[1][i].x-r,points[1][i].y-r),cvPoint(points[1][i].x+r, points[1][i].y+r), cvScalar(0,0,255), 2); } cvReleaseImage(&eig); cvReleaseImage(&temp); Mat *hist = new Mat(imageg); return (jlong) hist;}
Harris:
Orb:
Fast:
Harris (cvGoodFeaturesToTrack):
阅读全文
0 0
- opencv 特征点提取算法 SIFT SURF ORB FAST LBP学习(二)
- opencv 特征点提取算法 SIFT SURF ORB FAST LBP学习(一)
- SIFT,SURF,ORB,FAST 特征提取算法比较
- SIFT,SURF,ORB,FAST,BRISK 特征提取算法比较
- SIFT,SURF,ORB,FAST 特征提取算法比较
- SIFT,SURF,ORB,FAST 特征提取算法比较
- OpenCV中feature2D学习——FAST特征点检测与SIFT/SURF/BRIEF特征提取与匹配
- OpenCv sift surf orb等特征点检测
- OpenCv的sift surf orb等特征点检测
- SIFT/SURF/ FAST / BREIF / ORB特征
- 【opencv】特征点检测方法--GFTT,SIFT,FAST,SURF
- 【opencv】特征点检测方法--GFTT,SIFT,FAST,SURF
- Opencv 特征点检测 整理(Harris,FAST,SIFT , SURF等总结)
- OpenCV中feature2D学习——SIFT和SURF算子实现特征点提取与匹配
- OpenCV中feature2D学习——SIFT和SURF算子实现特征点提取与匹配
- OpenCV SURF SIFT特征提取及RANSAC算法
- 图像特征检测描述(一):SIFT、SURF、ORB、HOG、LBP特征的原理概述及OpenCV代码实现
- 图像特征检测描述(一):SIFT、SURF、ORB、HOG、LBP特征的原理概述及OpenCV代码实现
- PyTorch(三)——使用训练好的模型测试自己图片
- android webview的使用
- win7系统注册表开机启动项如何打开?
- commit日志历史不一致的Git仓库合并
- viewpager中嵌套fragment实现联动
- opencv 特征点提取算法 SIFT SURF ORB FAST LBP学习(二)
- 数据库导出后的.SQL文件特别大,问题解决
- 让导航条的格式不随界面的变化而变化
- SOLID (object-oriented design)
- 图片处理线程异常终止
- 开始学习Android Studio
- Android Fragment 真正的完全解析(下)
- mfc acvtiveX注册(regsvr32)失败(找不到、版本不兼容)的解决办法
- 临时