2012-10-19 4 views
2

검은 색 선으로 윤곽선이 표시된 이미지가있는 이미지 (저작권상의 목적으로는 링크 할 수 없습니다)가 있습니다. 캐릭터를 설명하는 검은 색 선은 사진에서 가장 어두운 것입니다 (이 사실을 사용하여 찾을 수 있도록 계획 됨). 내가해야 할 일은 캐릭터 주변에 가상 상자를 그리는 4 개의 좌표를 얻는 것입니다. 상자는 내용물 안에 윤곽선이있는 문자를 유지하면서 가능한 한 작아야합니다. 상자의 중심점을 사용하여 인물의 인물의 중심점을 정확히 찾아내는 데이 상자를 사용하려고합니다.PIL - 가상 상자가있는 개체 식별

개요의 일부를 식별하기 시작했습니다. 이미지에서 가장 어두운 선이므로 getextrema()를 사용하여 외곽선에서 적어도 하나의 점을 얻었지만 더 많은 점을 얻은 다음 그 점을 결합하여 상자를 만드는 방법을 알아낼 수 없습니다.

이 문제에 대한 통찰력을 얻으실 수 있습니다. 건배!

  • EDIT *이 내가 지금 무엇을 가지고

: 그림 안에 점점 꽤 일관성있는 것으로 보인다

im = Image.open("pic.jpg") 
im = im.convert("L") 
lo, hi = im.getextrema() 
im = im.point(lambda p: p == lo) 
rect = im.getbbox() 
x = 0.5 * (rect[0] + rect[2]) 
y = 0.5 * (rect[1] + rect[3]) 

하지만 정말 중심으로 그 주변 아니다. 왜 그런가?

답변

1
  1. 아마도 이미 가지고있는 익스트림 마를 사용하여 이미지의 나머지 부분과 윤곽선을 구분하는 적절한 임계 값을 찾으십시오. 대비가 너무 크면 너무 힘들지 않고 최소값을 추가하십시오.
  2. 발견 한 값의 이미지를 임계 값으로 지정하십시오 (this question 참조). 이진 임계 값 이미지에서 어두운 부분이 흰색이되기를 원하므로 더 작은 임계 값 (lambda p: p < T)을 사용하십시오.
  3. 사용 thresholdedImage.getbbox()는 윤곽
+0

감사의 경계 상자를 얻을 수 있습니다. 상자의 중심점을 얻는 방법을 알고 있습니까? –

+0

그것은 직사각형입니다! 중심은 0.5 * (왼쪽 + 오른쪽), 0.5 * (위 + 아래)에 있습니다. – Junuxx

+0

나는 원래의 게시물을 지금 가지고있는 것으로 업데이트했습니다. 한 번 봐 마음? –