opencv python 이미지 윤곽/윤곽 검사/윤곽 그리 기 방법

이미지 의 윤곽 검 측,예 를 들 어 다각형 외부 계산,모양 필경,관심 분야 계산 등 이다.
Contours : Getting Started
윤곽
모든 연속 점(경 계 를 따라)을 연결 하 는 곡선 으로 간단하게 해석 하면 같은 색 이나 강 도 를 가진다.
윤곽 은 형상 분석 과 물체 검 측 과 식별 에 유용 한 도구 이다.
NOTE
4.567917.더 좋 은 정확성 을 얻 기 위해 2 치 도 를 사용 하 십시오.윤곽 을 찾기 전에 한도 값 법 이나 canny 가장자리 검 측 을 사용 하 십시오
  • OpenCV 3.2 부터findContours()원본 이미 지 를 수정 하지 않 고 수 정 된 이미 지 를 세 개의 반환 매개 변수 중 첫 번 째 로 되 돌려 줍 니 다
  • OpenCV 에서 윤곽 을 찾 는 것 은 검은색 배경 에서 흰색 대상 을 찾 는 것 이다
  • findContours(image, mode, method[, contours[, hierarchy[, offset]]])image:원본 이미지모드:윤곽 검색 모드method:윤곽 근사 방법출력:수 정 된 이미지,윤곽,차원 구조
    윤곽 은 모든 윤곽 의 목록 입 니 다.각각의 윤곽 은 대상 경계 점 의 좌표 입 니 다.
    윤곽 검색 모드
    속뜻
    cv2.RETR_EXTERNAL
    외부 윤곽 만 검출
    cv2.RETR_LIST
    모든 윤곽 을 추출 하여 목록 에 넣 고 등급 관 계 를 맺 지 않 습 니 다.
    cv2.RETR_CCOMP
    두 등급 의 윤곽 을 만 들 고 위의 한 층 은 외부 경계 이 며 안의 한 층 은 내부 구멍 의 경계 정보 이다.만약 내 공 안에 또 하나의 연결 물체 가 있다 면,이 물체 의 경계 도 꼭대기 층 에 있다.
    cv2.RETR_TREE
    등급 트 리 구조의 윤곽 을 세우다
    윤곽 접근 방법
    속뜻
    cv2.CHAIN_APPROX_NONE
    모든 윤곽 점 을 저장 합 니 다.인접 한 두 점 의 픽 셀 위치 차 이 는 1 을 초과 하지 않 습 니 다.즉,max(abs(x1-x2),abs(y2-y1)=1 입 니 다.
    cv2.CHAIN_APPROX_SIMPLE
    수평 방향,수직 방향,대각선 방향의 요 소 를 압축 하고 이 방향의 종점 좌표 만 유지 합 니 다.예 를 들 어 사각형 윤곽 은 4 개의 점 으로 윤곽 정 보 를 저장 합 니 다.
    cv2.CHAIN_APPROX_TC89_L1 또는 cv2.CHAINAPPROX_TC89_KCOS
    응용 Teh-Chin 체인 유사 알고리즘
    코드:
    
    import cv2
    import numpy as np
    
    img = cv2.imread('img.jpg')
    imgray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    ret, thresh = cv2.threshold(imgray, 127, 255, 0)
    im2, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    윤곽 그리 기cv2.drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset]]]]])image:원본 이미지
  • contours:Python 목록 으로 전 달 된 윤곽
  • contourIdx:윤곽 색인(하나의 윤곽 을 그 릴 때 유용 합 니 다.모든 윤곽 그리 기,전달-1)
  • 그림 의 모든 윤곽 을 그립 니 다:cv.drawContours(img,contours,-1,(0,255,0),3)네 번 째 윤곽 같은 하나의 윤곽 을 그 려 야 합 니 다.cv.drawContours(img,contours,3,(0,255,0),3)그러나 대부분의 경우 네 번 째 윤곽 을 그립 니 다.다음 방법 은 매우 유용 합 니 다.cnt = contours[4] cv.drawContours(img,[cnt],0,(0,255,0),3)코드:
    
    import cv2
    import numpy as np
    
    img = cv2.imread('img7.png')
    imgray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    ret, thresh = cv2.threshold(imgray, 127, 255, 0)
    im2, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    cnt = contours[0]
    cv2.drawContours(img,[cnt],0,(0,255,0),3)
    
    cv2.imshow('src',img)
    
    cv2.waitKey()


    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기