바뀜
둘러보기로 가기
검색하러 가기
102번째 줄:
102번째 줄:
− +
+
+
+
179번째 줄:
182번째 줄:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
편집 요약 없음
</syntaxhighlight>
</syntaxhighlight>
|-
|-
|영상 내보내기
|영상 보여주기
|처리한 영상을 img에 담으면 각 프레임마다
|처리한 영상을 img에 담으면 각 프레임마다
'창이름'이라는 창을 띄워 매끄러운 영상으로 보여준다.
'창이름'이라는 창을 띄워 매끄러운 영상으로 보여준다.
print함수로 코드 중간을 점검하듯, imshow로 점검한다.
|<syntaxhighlight lang="python">
|<syntaxhighlight lang="python">
cv2.imshow('창이름', img)
cv2.imshow('창이름', img)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 240)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 240)
</syntaxhighlight>[카메라 외의 영상은 이렇게 안줄여진다고 하던데...]
</syntaxhighlight>[카메라 외의 영상은 이렇게 안줄여진다고 하던데...]
=== 처리 효율 ===
{| class="wikitable"
!의도
!설명
!방법
|-
|이미지 형태 변환
|원본 이미지를 사용하면 처리량이 많아져 계산이 오래걸린다.
옵션은 굉장히 다양한데, 자주 쓰이는 것만 모아보았다.
{| class="wikitable"
!옵션
!설명
|-
|cv2.COLOR_BGR2GRAY
|BGR 컬러 이미지를 그레이스케일로
|-
|cv2.COLOR_BGR2RGB
|BGR을 RGB로 변환
|-
|
|
|}
|<syntaxhighlight lang="python">
cov_img = cv2.cvtColor(img, cv2.COLOR_옵션) # 원본 img와 옵션을 받아 형태를 변환한다.
</syntaxhighlight>
|-
|바이너리
|이미지를 검은색과 흰색만으로 표현한 것.
그레이스케일보다 더 빠른 처리를 위해서 + 피사체의 모양을 더 명확하게 파악하기 위해.
|<syntaxhighlight lang="python">
ret, cov_img = cv2.threshold(img, 경계값, 255, cv2.THRESH_BINARY)
# ret엔 트레시홀딩에 사용한 경계값이 나오니, 버리는 값이다.
ret, cov_img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU) # 원본 img와 옵션을 받아 형태를 변환한다.
# ret에 사용된 경계값이 담기니, 이 ret은 쓸만할지도..
</syntaxhighlight>파이프 문자로 연결한 오츠 옵션은 오츠의 알고리즘을 통해 경계값을 자동으로 설정하게 하기 위한 것이다.
오츠의 알고리즘을 사용하면 모든 경우의 수에 대한 경계값을 조사하기 때문에 느리다.
|-
|적응형 트레숄드
|그러나.. 조명이 일정하니 않은 경우엔 하나의 경계값을 전체에 적용하면 일부가 타버리는 경우가 있다.
때문에 여러 영역에 따라 달리 적용해주어야 한다.
|<syntaxhighlight lang="python">
block_size = 9 # 블록사이즈
c = 5 # 차감상수
cov_img = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, block_size, c)
</syntaxhighlight>적응형에서 가우시안 분포를 사용해 정리하는 편이 노이즈도 적고 깨끗한 이미지를 얻을 수 있다.
|}
=== 이미지 준비 ===
{| class="wikitable"
!의도
!설명
!방법
|-
|노멀라이즈
|정규화 하면 흐릿했던 이미지의 격차를 벌려 선명한 이미지를 얻을 수 있다.
|<syntaxhighlight lang="python">
norm = cv2.normalize(img, None, 0, 255, cv2.NORM_MINMAX) # 구간 노멀라이즈를 실행한다.
</syntaxhighlight>
|-
|이퀄라이즈
|중심에서 멀리 떨어진 값은 노멀라이즈를 적용해도 여전히 흐리다.
노멀라이즈 후 누적값을 전체 개수로 나누어 나온 값을 원래 값에 매핑.
각각의 값이 전체 분포에 차지하는 비중에 따라 재분배하여 명암대비에 효과적.
빛이 적어 윤곽선이 흐릿한 부분을 살려준다.
|<syntaxhighlight lang="python">
img = cv2.equalizeHist(img)
</syntaxhighlight>
|}
= 꾸미기 =
= 꾸미기 =