나는 로고 (로고가 다른 명암, 색조 또는 채도가있을 수 있음)를 감지해야하는 안드로이드 프로젝트를하고 있는데, 안드로이드 용 OpenCV-2.3.1의 히스토그램 비교를 사용하고 있습니다.이미지 로고 비교
다음 단계는 다음과 같습니다.
1)은 저장된 이미지
private List<Integer> histSize;
private List<Float> ranges;
histSize.add(50);
histSize.add(60);
histSize.add(10);
ranges.add(0f);
ranges.add(256f);
ranges.add(0f);
ranges.add(180f);
ranges.add(0f);
ranges.add(256f);
channels.add(0);
channels.add(1);
channels.add(2);
hsv_base1=new Mat();
Imgproc.cvtColor(image1,hsv_base1, Imgproc.COLOR_BGR2HSV);
hsv_base.add(hsv_base1);
Imgproc.calcHist(hsv_base, channels,new Mat(), hist_base, histSize, ranges,false);
2) 가 그때마다 촬상 화상의 프레임을 크로 핑하고 HIST의 값을 계산한다. 잘라낸 이미지의 크기는 저장된 이미지의 크기와 동일하며 위와 같은 방법으로 히스토그램 값을 계산합니다.
3) 모두 이미지
double base_test2 = Imgproc.compareHist(hist_base1,hist_baseCamera1,Imgproc.CV_COMP_CHISQR);
의 저장 HIST 값을 비교 나는 comparehist의 좋은 가치를 얻을. 그러나 문제는 때로는 임의의 캡처 된 이미지, 즉 원치 않는 값에 대해 좋은 값을 제공합니다.
이제 히스토그램 비교와 함께 다른 방법을 사용할 계획입니다. 내 로고는 원으로 구성됩니다.
내 질문은 : 캡처 한 이미지가 저장된 로고의 원과 정확히 같은 크기의 원으로 구성되어 있다는 것을 알 수있는 방법이 있습니까?
또는 내가 사용해야하는 다른 방법, 또는 채널, 범위, histSize의 저장된 값으로 재생할 수 있습니까? 내가 전에 템플릿 매칭을 사용했다
, 매우 느리고 나는이에 어떤 빛을 감사하겠습니다
같은 크기의 이미지에 대한 꽤 어렵다.
세그먼트 화가 더 나은 옵션 인 것 같습니다. openCv에서 세그먼트 화를 구현 한 적이 없지만 이것을 시도해 보겠습니다. – user1249358