복붙노트

[PYTHON] 파이썬을 사용하여 타겟에서 총알 구멍을 탐지하는 법

PYTHON

파이썬을 사용하여 타겟에서 총알 구멍을 탐지하는 법

파이썬과 opencv를 사용하여 타겟에서 총알 구멍을 감지하는 방법을 알고 싶습니다.

나는 그 둘레에 등고선을 그릴 수 없다. 지금까지 임계 값을 사용하여 작업했으며 다음 결과를 얻었습니다 (임계 값 및 이진 AND 후 이미지).

여기에 원본 이미지가 있습니다.

총알 구멍을 감지하고 이에 따라 점수를 계산하기 위해 어떤 접근 방식을 따라야하는지 모릅니다.

어떤 도움을 주시면 감사하겠습니다.

해결법

  1. ==============================

    1.색상 분할 (Segmentation)이라는 매우 간단한 유형의 분할 기법을 사용하면 이진 이미지를 얻기 위해 주어진 RGB 이미지에 임계 값을 적용 할 수 있습니다.

    색상 분할 (Segmentation)이라는 매우 간단한 유형의 분할 기법을 사용하면 이진 이미지를 얻기 위해 주어진 RGB 이미지에 임계 값을 적용 할 수 있습니다.

    img = cv2.imread('/Users/anmoluppal/Desktop/cAMDX.jpg')
    
    img_thresholded = cv2.inRange(img, (60, 60, 60), (140, 140, 140))
    

    이진 이미지의 노이즈는 다음과 같이 이진 이미지의 여는 작업을 사용하여 제거 할 수 있습니다.

    kernel = np.ones((10,10),np.uint8)
    opening = cv2.morphologyEx(img_thresholded, cv2.MORPH_OPEN, kernel)
    

    이제 총알 구멍에 대한 명확한 그림이 있습니다. 마지막 부분은 이러한 윤곽선을 찾고 전경을 강조 표시하기 위해 주변에 원 / 사각형을 그립니다.

    contours, hierarchy = cv2.findContours(opening.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
    print len(contours)
    
    for contour in contours:
        (x,y),radius = cv2.minEnclosingCircle(contour)
        center = (int(x),int(y))
        radius = int(radius)
        cv2.circle(img,center,radius,(0,255,0),2)
        # labelling the circles around the centers, in no particular order.
        position = (center[0] - 10, center[1] + 10)
        text_color = (0, 0, 255)
        cv2.putText(img, str(i + 1), position, cv2.FONT_HERSHEY_SIMPLEX, 1, text_color, 3)
    

  2. from https://stackoverflow.com/questions/33321303/how-to-detect-bullet-holes-on-the-target-using-python by cc-by-sa and MIT license