2016-11-19 2 views
1

저는 python을 사용하여 opencv를 처음 사용하고 이미지의 윤곽선 모양을 얻으려고합니다. square, rectangle, circle, triangle과 같은 일반적인 모양 만 고려하면 numpycv2 라이브러리 만 사용하여 윤곽선 모양을 얻을 수있는 방법이 있습니까?내부 윤곽선 및 색상 감지

또한 컨투어 내부의 색을 찾고 싶습니다. 내가 어떻게 해?

윤곽 영역을 찾으려면 내장 함수 인 cv2.contourArea(cnt)이 있습니다. "윤곽선 모양"및 "윤곽선 색"에 대한 내장 함수가 있습니까? 도와주세요!

참고 : 고려중인 이미지에는 여러 개의 일반 모양이 포함되어 있습니다.

+0

육각형과 같은 다각형에 적용 나던 나는 이미지의 모양을 식별하는 부분을 얻었다. 누구나 윤곽선의 색상 식별에 도움을 줄 수 있습니까? 참고 : 모든 윤곽선 내부의 색상은 하나, 당신은 할 수 있습니다 "윤곽 내부 윤곽"에 관한 –

+0

노란색'hieararchy를 나타내는 구조체를 반환 findContours', 색 그것은 하나의 빨강, 파랑, 녹색 중 하나 윤곽 즉, 여러 가지 빛깔하지 윤곽선이 발견되었습니다. OpenCV에는 이것을 사용하는 방법에 대한 [튜토리얼] (http://docs.opencv.org/trunk/d9/d8b/tutorial_py_contours_hierarchy.html)이 있습니다. –

+0

@ 단 색상을 윤곽선으로 잘못 이해했습니다. 저는 실제로 컨투어 내부의 색상을 감지하는 방법을 알고 싶었습니다. –

답변

1

이 방법은 더 길 수도 있지만 지금은 내 머리 꼭대기에 있습니다. 윤곽선 모양을 찾으려면 findcontours 함수를 사용하면 포인트 벡터를 출력으로 제공합니다 (윤곽선의 경계 지점). 이제 순간을 사용하여 윤곽의 중심을 찾으십시오. 컨투어 사용 찾는

cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]]) 

화상 영리한 출력 이미지의 function.

순간에서 계산 된 중심이 링크 등고선 중심으로부터 지금 중심으로부터 포인트의 거리를 비교하여 형상 구분하는데 에 저장된 각 점의 http://docs.opencv.org/trunk/dd/d49/tutorial_py_contour_features.html

계산 거리를 참조

1) circle - 모든 윤곽 점은 대략 중심으로부터 대략 동일한 거리에 있습니다.

2) 사각형, 직사각형 e- 중심에서 4 개 지점을 찾습니다.이 점은 꼭지점이며 대략 동일한 거리를 갖습니다. 이제 가장자리 길이를

3) traingles를 사용하여 사각형에서 사각형을 차별화 - 당신이 여기 다른 조건을 사용할 수 있도록 만 4 형태 찾는

이 있기 때문에 이것은, 삼각형의 다른 유형에 대한 까다로운 일이 될 수 있습니다 사각형, 사각형 및 삼각형에 정점을 사용하여 마스크를 만듭니다.

단색 만 사용하기 때문에 중심 주위에 작은 패치를 만들고 거기에서 RGB 픽셀의 평균값을 얻습니다. 중심점이 (100,100)이고 반지름이 20 픽셀 인 원이 있다고 가정합니다. 10 x 10 크기의 패치를 만들고 (100,100) 중앙에 놓고이 패치의 R, G, B 값의 평균값을 찾습니다.적색 R 용

~ 255 G는 0 ~ 녹색 R b는 0 ~

0 ~ G ~ 255 블루 R 0 ~ G ~ 0 및 B에 대한 B 0 ~

~ 255

참고 : opencv는 RGB가 아닌 BGR로 값을 저장합니다.

+0

아이디어에 감사드립니다. 제가이 모든 것을 처음 접했을 때 조금 자세히 설명해 주시겠습니까? 나는 함수를 사용하는 것에 대해 제대로 알지 못한다. 미리 감사드립니다. –

+0

opencv C++을 사용하면 직접 파이썬 용으로 이해해야합니다. –

0

특정 윤곽선의 모양을 찾기 위해 윤곽 주위에 경계 사각형을 그릴 수 있습니다. 이제 윤곽선 영역을 경계 사각형 영역과 비교할 수 있습니다. 등고선의 면적이 경계 사각형의 면적의 절반 인 경우 모양은 삼각형입니다. 윤곽 영역이 경계 사각형의 영역보다 작지만 경계 사각형 영역의 절반보다 큰 경우 해당 원입니다.

참고 :이 방법은 일반 삼각형 원으로 제한됩니다. 이, 각형 등