opencv surf 예제

opencv 4.1.0 (리눅스)에서 SIFT 및 SURF 기능을 얻는 방법? 나는 사용하는 동안이 오류가 발생 : cv2.xfeatures2d.SIFT_create () 먼저 우리는 SURF 키 포인트와 설명기를 찾아 그것을 그리는 방법에 대한 간단한 데모를 볼 수 있습니다. 모든 예제는 SIFT와 동일하기 때문에 파이썬 터미널에 표시됩니다. 문제는 내 코드는 꽤 많은 그 샘플 코드를 기반으로: http://opencv.itseez.com/doc/tutorials/features2d/feature_homography/feature_homography.html#feature-homography 서핑과 ORB의 각각에 대 한 하나의 예제를 보자 (둘 다 다른 거리를 사용 하 여 측정)을 참조하십시오. 여기서는 두 이미지 간의 피처를 일치하는 방법에 대한 간단한 예제를 살펴보겠습니다. 이 경우 쿼리이미지와 trainImage가 있습니다. 우리는 쿼리를 찾기 위해 노력할 것입니다사진기능 일치를 사용하여 기차이미지. (이미지는 /샘플/c/box.png 및 /샘플/c/box_in_scene.png) 지금까지 우리는 메모리에 저장된 모든 좋은 일치를 가지고있다. 실험적으로 배운 한 가지는 7개 이상의 good_match가 있을 때 개체가 발견되었다고 가정하고 원하는 대로 수행할 수 있다는 것입니다. 그리고 다시 억제 값은 당신을 위해 변경 될 수 있습니다, 그래서 당신은 당신의 자신에 그것을 체크 아웃해야. http://opencv.itseez.com/doc/tutorials/introduction/display_image/display_image.html#display-image 당신은 예를 들어 cmake에 의해 컴파일 contrib와 opencv가 필요합니다 이번에, 우리는 k 최고의 일치를 얻기 위해 BFMatcher.knnMatch ()를 사용합니다.

이 예제에서는 d.Lowe가 논문에서 설명한 비율 테스트를 적용할 수 있도록 k=2를 적용합니다. (opencv 라이브러리가 시스템 경로에 제대로 연결되지 않은 경우 작동하지 않을 수 있습니다.) FLANN은 근사한 가까운 이웃을 위한 빠른 라이브러리를 의미합니다. 여기에는 큰 데이터 집합에서 가장 가까운 이웃 검색과 고차원 기능에 최적화된 알고리즘 컬렉션이 포함되어 있습니다. 대용량 데이터 집합의 경우 BFMatcher보다 더 빠르게 작동합니다. FLANN 기반 매치러를 사용하면 두 번째 예제를 볼 수 있습니다. 아래 결과를 참조하십시오. SURF가 Blob 감지기와 비슷하다는 것을 알 수 있습니다. 그것은 나비의 날개에 흰색 방울을 감지합니다. 다른 이미지로 테스트할 수 있습니다.

기본적으로 OpenCV에서 가장 흥미로운 내장 알고리즘 중 하나는 기능 검출기입니다. 이 튜토리얼에서 나는 단지 SURF 알고리즘을 다룰 것입니다,하지만 SURF 및 SIFT 알고리즘은 무료가 아니며, 상업적 목적으로만 교육사용하지 말아야합니다. 바라건대 당신은 코드를 수정 할 수있을 것입니다ORB, FAST, MSER, STAR, BRIEF 등 1199 키 포인트는 그림에 표시하기에 너무 많이같은 다른 기능 검출기뿐만 아니라 (무료 것들). 이미지에 그리기 위해 50개 정도 줄일 수 있습니다. 일치하는 동안, 우리는 모든 기능이 필요할 수 있습니다, 하지만 지금은. 그래서 우리는 헤시안 문턱을 증가. Update (02.07.2013): 마지막으로 보기 위해 미리 컴파일 된 작업 소스 코드를 추가했습니다. 바라건대 그것은 코드를 사용하는 방법에 대한 몇 가지 미스 언더 앤드를 지울 것입니다. Apperantly이 간단한 기사는 년 동안 상당히 인기를 얻고있다.

우리가 cv2.drawKeypoints()를 사용하여 키 포인트를 뽑는 것처럼 cv2.drawMatches()는 경기를 그리는 데 도움이 됩니다. 두 개의 이미지를 가로로 스택하고 첫 번째 이미지에서 두 번째 이미지로 선을 그려 가장 일치하는 일치를 표시합니다.

Posted in Uncategorized