2016-06-02 8 views
0

최근에 Emgu 라이브러리를 2.4.2에서 3.0.0으로 업그레이드하려고했습니다. 따라서 버전이 크게 변경되었으며 코드를 수정하여 문제가 없는지 확인하고 있습니다. EMGU 3.0.0 OpenCV 등고선 점 삽입 및 제거

내 코드가 사용하고 가끔 삽입 방법을 사용하여 포인트를 RemoveAt을 방법을 사용하여 점을 제거하거나 추가 Index.html을

http://www.emgu.com/wiki/files/2.4.2/do ... :

Emgu의 2.4.2 버전은 윤곽 클래스를했다. 내 초기 윤곽에는 이상 치를 포함 할 수 있습니다 (곡률, 인접 점 사이의 거리 등 다양한 기준으로 인해)

새 버전의 Emgu에서 시도한 것은 VectorOfPoint 클래스를 사용하는 것입니다. 그것은 내 코드의 많은 부분에 대해 작동하지만, RemoveAt 메소드와 동등한 기능을 제공하지는 못합니다. Insert 메서드 (Push 메서드 : http://www.emgu.com/wiki/files/3.0.0/document/html/9f6838b0-d946-adc6-e14e-8f223079f5e3.htm)와 비슷한 것을 가진 것처럼 보이지만 정확히 원하는 것일지는 확신 할 수 없습니다.

나는 조금 더 문제에보고하고, 매트 클래스를 추가하고 시퀀스의 끝에서 요소를 제거 할 수있는 푸시 백PopBack 방법을 가지고 것을 보았다. 그러나 전에 코드를 사용 했으므로 특정 위치에서 요소를 제거하려고했습니다 ( RemoveAt 메서드를 사용하면 제거 할 요소의 인덱스 i를 입력 할 수 있습니다). 내가 Emgu의 새 버전에서 사용할 수있는 다이렉트 기능이 표시되지 않는

for (int i = nPoints - 1; i >= 0; i--) 
       { 
        if (!goodPoint[i]) 
        { 
         shapeContour.RemoveAt(i); 
         continue; 
        } 
       } 

: 예를 들어

이 내가 전에 RemoveAt을 방법을 사용하는 방법이다. 나는 틀린가?

어떤 도움을 주셔서 감사합니다. 미리 감사드립니다.

+0

정확히 무엇이 도움이 필요합니까? 질문에 관련 코드를 추가하고 사용중인 프로그래밍 언어 및 관련 라이브러리에 대한 태그도 추가해야합니다. –

답변

0

pop()을 사용하여 벡터 끝에있는 값을 제거하고 가져 오려면 ther에 "인덱스로 제거"메서드가 없지만 pop () 및 push() (벡터의 끝까지 삽입).

+0

그래서 VectorOfPoint 클래스를 살펴보면 ** Pop() ** 메서드는 보이지 않지만 ** Push() ** 메서드는 http://www.emgu.com/wiki/files/3.0입니다. 0/document/html/05a55c58-b440-ca74-439c-f288410e692f.htm "좋은"점을 발견하고 새 VectorOfPoint 객체를 만드는 것이 더 나을 것입니다. – solarflare

+0

목록 포인트 = 새 목록 (vec.toArray()); points.removeAt (i) .... points.add (x) .... VectorOfPoints vec2 = new VectorOfPoints (points.toArray()); –

+0

위 코드를 실행하는 함수를 빌드 할 수 있습니다. VectorOfPoint의 확장 메서드 (첫 번째 매개 변수가 "this VectorOfPoint"인 정적 메서드)를 만드는 것이 좋습니다. –