문제 상황-> vector<cv::Rect> 와 vector<int> 가 서로 pair 되어서 전자가 컨텐츠 후자가 인덱스로 같이 움직임. 이 때 cv::Rect 의 좌상단 좌표값을 기준으로 정렬 후 인덱스도 마찬가지로 정렬. 원본 셋은 따로 저장되어 있어서 인덱스로 레퍼런스. 이 때 랜덤하게 입력된 좌상단 x 좌표값을 가장 잘 정렬할 수 있는 방법은?
Windforces(k920048)2016-10-12 21:28
아무것도 하지 않기 결국 또 뒤 섞이니 다 부질없습니다
우물안올챙이(whiteprince)2016-10-12 21:28
ㄴ ㄴㄴ, 검색속도 향상을 위한 정렬이 아니라 결과값이 x좌표 기준으로 뽑혀야 해서 그럼
Windforces(k920048)2016-10-12 21:29
데이타가 몇개쯤 돼?
codesafer(codesafer)2016-10-12 21:30
다행히 Rect 가 left, top, right, bottom 순서로 되어있다면, ( x1, y1, x2, y2 랑 마찬가지 )
codesafer(codesafer)2016-10-12 21:30
지금은 최대 7개인데 앞으로 더 늘어날 수도 있음. 문자열에 대한 Region Of Interest 를 뽑아내는 거라
Windforces(k920048)2016-10-12 21:30
그리고 각 자료형이 32비트 ( int 나 float ) 이하라면, 간단히 long long 사이즈로 정렬해버릴 수 있음.
codesafer(codesafer)2016-10-12 21:31
cv::Rect 클래스를 보면 자동으로 좌상단 좌표값을 찾아내어 x, y 라는 멤버변수에 저장시킴
Windforces(k920048)2016-10-12 21:31
16개 미만이라면 insertion sort 계열이 가장 좋은 성능을 보일듯.
codesafer(codesafer)2016-10-12 21:31
15000 개 이하라면 quick sort
codesafer(codesafer)2016-10-12 21:31
그 이상이라면 radix 를 고려해 볼 수 있음.
codesafer(codesafer)2016-10-12 21:32
퀵소트가 답이겠네
Windforces(k920048)2016-10-12 21:32
ㄱㅅㄱㅅ
Windforces(k920048)2016-10-12 21:32
닥치고 std::sort 를 쓴다면 대충 유리한걸로 맞춰줌.
codesafer(codesafer)2016-10-12 21:33
ㄴ 커스텀 정렬하는 부분이 존재해서 STL 이나 표준에 포함되는 함수를 사용할 수가 없는 상황임
Windforces(k920048)2016-10-12 21:34
ㄱㅅㄱㅅ
Windforces(k920048)2016-10-12 21:34
웅? 그건 니가 생각을 달리할 수 있는 부분 같은디?
codesafer(codesafer)2016-10-12 21:35
당연히 정렬 비용을 생각한다면, 커스텀 구조체일 경우 정렬에 꼭 필요한 부분을 제외하곤 최소화하는게 좋은데.
codesafer(codesafer)2016-10-12 21:36
compare 함수를 정의해주면 커스텀 정렬이 돼용.
codesafer(codesafer)2016-10-12 21:36
구조체 자체를 건드릴 수 있으면 좋으련만 OpenCV 내장 클래스라 내가 할 수 있는 부분이 없네 그려
뭘 정렬하느냐가 문제~
닥퀵 - dc App
문제 상황-> vector<cv::Rect> 와 vector<int> 가 서로 pair 되어서 전자가 컨텐츠 후자가 인덱스로 같이 움직임. 이 때 cv::Rect 의 좌상단 좌표값을 기준으로 정렬 후 인덱스도 마찬가지로 정렬. 원본 셋은 따로 저장되어 있어서 인덱스로 레퍼런스. 이 때 랜덤하게 입력된 좌상단 x 좌표값을 가장 잘 정렬할 수 있는 방법은?
아무것도 하지 않기 결국 또 뒤 섞이니 다 부질없습니다
ㄴ ㄴㄴ, 검색속도 향상을 위한 정렬이 아니라 결과값이 x좌표 기준으로 뽑혀야 해서 그럼
데이타가 몇개쯤 돼?
다행히 Rect 가 left, top, right, bottom 순서로 되어있다면, ( x1, y1, x2, y2 랑 마찬가지 )
지금은 최대 7개인데 앞으로 더 늘어날 수도 있음. 문자열에 대한 Region Of Interest 를 뽑아내는 거라
그리고 각 자료형이 32비트 ( int 나 float ) 이하라면, 간단히 long long 사이즈로 정렬해버릴 수 있음.
cv::Rect 클래스를 보면 자동으로 좌상단 좌표값을 찾아내어 x, y 라는 멤버변수에 저장시킴
16개 미만이라면 insertion sort 계열이 가장 좋은 성능을 보일듯.
15000 개 이하라면 quick sort
그 이상이라면 radix 를 고려해 볼 수 있음.
퀵소트가 답이겠네
ㄱㅅㄱㅅ
닥치고 std::sort 를 쓴다면 대충 유리한걸로 맞춰줌.
ㄴ 커스텀 정렬하는 부분이 존재해서 STL 이나 표준에 포함되는 함수를 사용할 수가 없는 상황임
ㄱㅅㄱㅅ
웅? 그건 니가 생각을 달리할 수 있는 부분 같은디?
당연히 정렬 비용을 생각한다면, 커스텀 구조체일 경우 정렬에 꼭 필요한 부분을 제외하곤 최소화하는게 좋은데.
compare 함수를 정의해주면 커스텀 정렬이 돼용.
구조체 자체를 건드릴 수 있으면 좋으련만 OpenCV 내장 클래스라 내가 할 수 있는 부분이 없네 그려
아닝~
그걸 감안해두, 그냥 compare 만 짜주면 됨유
상속하면 되기야 하겠지만 그럼 프로그램 짜는 내내 그 상속된 클래스를 써줘야 하니 귀찮
아 뭔말하는지 알겠다.
예를 보여주지.
sorting criterion 을 직접 짜주란 말이지?
http://ideone.com/8bLFIR