[OpenCV] 꼭짓점 (코너, corner) 추출 (cornerHarris, 파이썬)


파이썬에서 OpenCV를 사용해서 그림 파일에서 꼭짓점을 추출해보도록 하겠습니다. 코너 (corner) 추출이라고도 합니다.


import cv2

import numpy as np

import matplotlib.pyplot as plt


그림 = cv2.imread('체스판.jpg') # 결과를 보기 쉽도록 체스판 그림을 사용했습니다.

그림RGB = cv2.cvtColor(그림, cv2.COLOR_BGR2RGB)

그림흑백 = cv2.cvtColor(그림, cv2.COLOR_BGR2GRAY) # 꼭짓점 추출에는 흑백 그림이 필요합니다.

그림꼭짓점 = cv2.cvtColor(그림, cv2.COLOR_BGR2RGB) # 나중에 꼭짓점을 여기에 표시합니다.


그림흑백 = np.float32(그림흑백) # 넘파이(numpy)를 사용해서 자료형을 부동소수점으로 바꾸어주어야 합니다.

결과 = cv2.cornerHarris(그림흑백, 2, 3, 0.04) # 2, 3, 0.04는 바꿀 수 있는 인자들입니다.

결과 = cv2.dilate(결과, None, iterations=6) # 꼭짓점을 표시하기 위해 확장 (dilate) 연산을 합니다.

그림꼭짓점[결과>0.01*결과.max()]=[255, 0, 0] # 꼭짓점이 빨간색 점으로 그림에 표시됩니다.


# 이 아래 부분은 그림을 화면에 출력하기 위한 부분으로, OpenCV 알고리즘과는 상관이 없습니다.

plt.subplot(1, 2, 1) # 1행 2열에서 1번째 열

plt.imshow(그림RGB)

plt.xticks([]) # x축 좌표 숨김

plt.yticks([]) # y축 좌표 숨김


plt.subplot(1, 2, 2) # 1행 2열에서 2번째 열

plt.imshow(그림꼭짓점)

plt.xticks([]) # x축 좌표 숨김

plt.yticks([]) # y축 좌표 숨김


plt.show()


이렇게 하면 그림의 꼭짓점이 멋지게 추출되는 것을 보실 수 있습니다.



[OpenCV] 외곽선, 모서리 (엣지, edge) 추출 (Canny, 파이썬)


파이썬에서 OpenCV를 사용해서 그림 파일에서 외곽선 (모서리) 추출을 해보도록 하겠습니다. 엣지 (edge) 추출이라고도 합니다.


import cv2

import matplotlib.pyplot as plt


그림 = cv2.imread('그림파일.jpg')

그림RGB = cv2.cvtColor(그림, cv2.COLOR_BGR2RGB)

외곽선추출 = cv2.Canny(그림, 100, 200) # 100, 200은 변경 가능한 인자값입니다.


# 이 아래 부분은 그림을 화면에 출력하기 위한 부분으로, OpenCV 알고리즘과는 상관이 없습니다.

plt.subplot(1, 2, 1) # 1행 2열에서 1번째 열

plt.imshow(그림RGB)

plt.xticks([]) # x축 좌표 숨김

plt.yticks([]) # y축 좌표 숨김


plt.subplot(1, 2, 2) # 1행 2열에서 2번째 열

plt.imshow(외곽선추출, cmap='gray')

plt.xticks([]) # x축 좌표 숨김

plt.yticks([]) # y축 좌표 숨김


plt.show()


이렇게 하면 그림의 외곽선만 멋지게 추출되는 것을 보실 수 있습니다.



코틀린의 문자열에서 부분 문자열을 뽑아내려면 아래와 같이 slice라는 함수를 사용하면 됩니다.

 

var 문자열 = "안녕하세요"

var 범위 = IntRange(0, 3) // 0, 1, 2, 3 포함

println(문자열.slice(범위))

---

<출력 결과>

안녕하세

 

+ Recent posts