2013-03-31 5 views
4

제 목표는 두 이미지에서 일치하는 키포인트를 사용하여 기본 매트릭스를 계산하는 것입니다.MatOfPoint2f에 포인트를 추가하는 방법은 무엇입니까?

Calib3d.findFundamentalMat(pt1, pt2, Calib3d.FM_8POINT); 

사람이 알고 있나요 어떻게해야합니까 :

MatOfDMatch matches = new MatOfDMatch(); 
matcher.match(descriptor1,descriptor2, matches); 

List<DMatch> matchesList = matches.toList(); 
List<DMatch> good_matches = new ArrayList<DMatch>(); 
org.opencv.core.Point pt1; 
org.opencv.core.Point pt2; 

//Then I definite good_dist here 
//.... 


for(int i =0;i<matchesList.size(); i++) 
{ 
    if(matchesList.get(i).distance<good_dist) 
    { 
    good_matches.add(matchesList.get(i)); 
    pt1 = keypoints1.toList().get(matchesList.get(i).queryIdx).pt; 
    pt2 = keypoints2.toList().get(matchesList.get(i).trainIdx).pt; 
    } 
} 

가 지금은 위해 MatOfPoint2f에 PT1 및 PT2를 전달하려는

이 함수를 호출 : 지금은 좋은 매칭 점있어? 미리 감사드립니다.

답변

4

점 (array_point)의 배열을 만들고 다음을 수행하십시오 문제가 해결되지 않을 경우

MatOfPoint2f yourArray_of_MatofPoint2f= new MatOfPoint2f(array_point); 

이 자바에서이다, 게시하시기 바랍니다.

+0

을 듣고 싶어요 포인트 배열 만들기 – Mavie

0

그래서 우리는 List<DMatch> good_matches으로 시작합니다. 그런 다음 List<org.opencv.core.Point>처럼 "(matchesList.get(i).distance<good_dist)"if 문 내부의 목록에 pt1 및 pt2 Point 객체를 추가하려고합니다. 우리는 다음과 같이 우리는 다음 MatOfPoint2f에 포인트의 목록을 변환

List<DMatch> good_matches; 
List<org.opencv.core.Point> points1; 
List<org.opencv.core.Point> points2; 

있습니다

org.opencv.core.Point goodPointArray1[] = new org.opencv.core.Point[goodKeyPoints1.size()]; 
goodKeyPoints1.toArray(goodPointArray1); 
MatOfPoint2f keypoints1Mat2f = new MatOfPoint2f(goodPointArray1); 

를 내가이 존재하는 일을해야합니다보다 효율적인 방법을 생각하고, 나는 그들에게

관련 문제