opencv 学习笔记(2)
来源:互联网 发布:ios刷机软件 编辑:程序博客网 时间:2024/06/14 05:42
Fast 算法和harris算法
- Fast算法
#include "opencv2/opencv.hpp"#include"highgui.h"#include "iostream"using namespace std;using namespace cv;bool isdif(uchar a,uchar b){ if(abs(a-b)<10) return false; else return true;}int main(){ VideoCapture cap(0); while (true) { Mat frame; cap>>frame; /* fast */ Mat frame_rgb; frame.copyTo(frame_rgb); cvtColor(frame, frame, CV_64FC1);// cout<<frame.at<uchar>(0,0); 变化的数字 int pos[4][2];//存放相对中心的绝对位置,4个点,每个点有x,y两个方向 pos[0][0]=0; pos[0][1]=-3; pos[1][0]=3; pos[1][1]=0; pos[2][0]=0; pos[2][1]=3; pos[3][0]=-3; pos[3][1]=0; for (int i=3; i<frame.rows-3; i++) { for (int j=3; j<frame.cols-3; j++) { int num=0;//记录有几个和中心角点不一样 uchar cen= frame.at<uchar>(i,j);//中心角点像素 for (int k=0; k<4; k++) {//看四个点加上绝对位置以后是否符合 fast算法规则 uchar temp= frame.at<uchar>(i+pos[k][0],j+pos[k][1]); if (isdif(cen , temp)) { num++; } } if ((num==1) ||(num==3)||(num==4) ) { circle(frame_rgb,cvPoint(j,i),2,CV_RGB(255,0,0),2);//注意:i,j和 x,y相反 } } }}
- harris算法
/* HARRIS */ for (int i=1; i<frame.rows-1; i++) { for (int j=1; j<frame.cols-1; j++) { double IX,IY; IX=frame.at<uchar>(i,j-1)-frame.at<uchar>(i,j+1); IY=frame.at<uchar>(i-1,j)-frame.at<uchar>(i+1,j); double R=IX * IX* IY*IY- 0.009*(IX*IX+IY*IY);//0.1为k值,一般范围为0.05到0.5 R大的时候即为角点// cout<<R; if (R>1000) { circle(frame_rgb, cvPoint(j,i), 1, CV_RGB(255,0,0)); } } }\
- 调用harris的API
Mat con; Mat cornerStrength; cornerHarris(frame, cornerStrength, 2, 3, 0.1); Mat harrisCorner; threshold(cornerStrength, harrisCorner, 0.00001, 255, THRESH_BINARY); imshow("frame", harrisCorner); waitKey(10);
0 0
- opencv学习笔记(2)
- OpenCV学习笔记(2)
- opencv 学习笔记(2)
- opencv学习笔记(2)
- OPENCV学习笔记(2)
- OpenCV 2学习笔记
- opencv 学习笔记2
- opencv学习笔记2
- OpenCV学习笔记(18)OpenCV之基本绘图2
- openCV学习笔记(二)---openCV系列基本操作(2)
- openCV学习笔记(2)--cvCreateTrackbar
- OpenCV学习笔记(2)-----开启摄像头
- OpenCV学习笔记六:直方图(2)
- OpenCV学习笔记(2)CvRect
- OpenCV学习笔记(1):配置OpenCV
- opencv学习笔记(1)-opencv安装
- openCV学习笔记(一)---初始openCV
- opencv学习笔记2:HighGUI
- matlab可以调用c++的DLL吗?
- 极光示例编译异常
- processing所有代码
- Android简易实战教程--第四十五话《几种对话框》
- python,从爬虫开始(一)
- opencv 学习笔记(2)
- Makefile的使用
- 参数模板模糊查询数据与字符串组过滤展现数据
- 讲一个MVC的故事
- 《Linux操作系统实用教程》笔记之防火墙使用
- RecyclerView Divider完美解决方案
- New Document
- JavaScript 中的“纯函数”
- modernizr的使用