opencv 3/C++SURF 특징 검출 실현
SURF 는 대상 위치 추적 과 식별,안면 인식,3D 재 구축,대상 추적 과 관심 사 추출 등에 활용 할 수 있다.
작업 원리:
1.그림 에서 POI(Points of Interest)Hessian Matrix 를 선택 합 니 다.
2.서로 다른 척도 공간 에서 관건 점 을 발견 하고 최대 신호 로 억제 하지 않 는 다.
3.특징 점 방법,회전 불변성 요구 발견;
4.특징 벡터 생 성;
클래스 SURF 의 구성원 함수 create()매개 변수 설명:
static Ptr<SURF> create(
double hessianThreshold=100,//SURF hessian
int nOctaves = 4, //
int nOctaveLayers = 3,//
bool extended = false, // (true 128 ,false 64 )
bool upright = false// (true ,false )
);
함수 detect()는 이미지 나 이미지 집중 의 관건 을 검사 하 는 데 사 용 됩 니 다.기본 클래스 Feature2D 의 구성원 함수 detect()매개 변수 설명:
void detect(
InputArray image,//
CV_OUT std::vector<KeyPoint>& keypoints,// ,( [i] [i] )
InputArray mask=noArray() // ( 8 )
);
함수 drawKeypoints()의 매개 변수 설명:
void drawKeypoints(
InputArray image, //
const std::vector<KeyPoint>& keypoints, //
InputOutputArray outImage,//
const Scalar& color=Scalar::all(-1), //
int flags=DrawMatchesFlags::DEFAULT //
);
함수 drawKeypoints()는 관건 점 을 그립 니 다.SURF 특징 검출 예시:
#include<opencv2/opencv.hpp>
#include<opencv2/xfeatures2d.hpp>
using namespace cv;
using namespace cv::xfeatures2d;
Mat src;
int minHessian = 50;
void trackBar(int, void*);
int main()
{
src = imread("E:/image/image/bdb.jpg");
if (src.empty())
{
printf("can not load image
");
return -1;
}
namedWindow("input", WINDOW_AUTOSIZE);
imshow("input", src);
namedWindow("output", WINDOW_AUTOSIZE);
createTrackbar("minHessian","output",&minHessian, 500, trackBar);
waitKey(0);
return 0;
}
void trackBar(int, void*)
{
Mat dst;
// SURF
Ptr<SURF> detector = SURF::create(minHessian);
std::vector<KeyPoint> keypoints;
detector->detect(src, keypoints, Mat());
//
drawKeypoints(src, keypoints, dst, Scalar::all(-1), DrawMatchesFlags::DEFAULT);
imshow("output", dst);
}
이상 의 opencv 3/C++SURF 특징 검 사 를 실현 하 는 것 이 바로 편집장 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 께 참고 가 되 고 저희 도 많이 응원 해 주시 기 바 랍 니 다.