Python 에서 OpenCV 가 윤곽 을 찾 는 인 스 턴 스 를 실현 합 니 다.

3882 단어 OpenCV윤곽 찾기
본 고 는 인 스 턴 스 코드 를 결합 하여 OpenCV 가 윤곽 을 찾 고 경계 상 자 를 가 져 오 는 방법 을 소개 할 것 이다.
코드:contours.py
OpenCV 는findContours함수 로 윤곽 을 찾 습 니 다.이치 화 된 그림 을 입력 하고 옵션 을 지정 하여 호출 하면 됩 니 다.

우 리 는 다음 그림 을 예시 로 한다.

이치 화 이미지
코드 공학data/은 강아지 와 빨 간 공의 이치 화 마스크 이미 지 를 제공 합 니 다.


미리 훈련 된 인 스 턴 스 분할 모델 을 사용 하여 생 성 되 었 으 며 스 크 립 트 를 볼 수 있 습 니 다detectron2_seg_threshold.py.모델 검출 결 과 는 다음 과 같다.

모델 용 마스크 R-CNN 은 이미 예측 테두리 가 있다.그러나 다른 모델 은 예측 마스크 만 나 올 수 있 으 며,이때 테 두 리 를 원 하면 OpenCV 로 추출 할 수 있다.
본 논문 코드 도 색 역 에 따라 빨 간 공 마스크 를 얻 는 방법 을 제공 했다.

import cv2 as cv
import numpy as np

#     
img = cv.imread(args.image, cv.IMREAD_COLOR)

# HSV   ,    
def _threshold_hsv(image, lower, upper):
  hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)
  mask = cv.inRange(hsv, lower, upper)
  result = cv.bitwise_and(image, image, mask=mask)
  return result, mask

_, thres = _threshold_hsv(img, np.array([0,110,190]), np.array([7,255,255]))

#     (  )
kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3), (1, 1))
thres = cv.morphologyEx(thres, cv.MORPH_OPEN, kernel)
윤곽 찾기

#     
#  cv.RETR_EXTERNAL:        
contours, hierarchy = cv.findContours(
  threshold, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)

#     ,  (  )
contours_poly = [cv.approxPolyDP(c, 3, True) for c in contours]

#     
h, w = threshold.shape[:2]
drawing = np.zeros((h, w, 3), dtype=np.uint8)
for i in range(len(contours)):
  cv.drawContours(drawing, contours_poly, i, (0, 255, 0), 1, cv.LINE_8, hierarchy)
경계 상자 가 져 오기boundingRect경계 상 자 를 가 져 오고 그립 니 다:

for contour in contours_poly:
  rect = cv.boundingRect(contour)
  cv.rectangle(drawing,
                (int(rect[0]), int(rect[1])),
                (int(rect[0]+rect[2]), int(rect[1]+rect[3])),
                (0, 255, 0), 2, cv.LINE_8)
minEnclosingCircle경계 권 을 가 져 오고 그립 니 다:

for contour in contours_poly:
  center, radius = cv.minEnclosingCircle(contour)
  cv.circle(drawing, (int(center[0]), int(center[1])), int(radius),
            (0, 255, 0), 2, cv.LINE_8)

레 퍼 런 스
OpenCV Tutorials / Image Processing
여기 서 OpenCV 가 윤곽 을 찾 는 인 스 턴 스 를 실현 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 OpenCV 가 윤곽 을 찾 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기