[python] 단방향 또는 양방향으로 화살표 있는 선 그리기, cv2.arrowedLine 함수 활용

코딩/python|2020. 9. 9. 13:11

이미지 내에 화살표가 있는 선을 그리고 싶을 때는 cv2.arrowedLine() 함수를 사용할 수 있습니다.

 

cv2.arrowedLine(선을 넣을 이미지, 선출발좌표, 선종료좌표, 선색깔, 선두께)

 

참고로 화살표 없는 일반 선을 그릴 때는 cv2.line() 함수를 사용합니다. 

 

그러면 이미지 내에 화살표를 넣어보는 예제를 하나 만들어 보도록 하겠습니다. 코드와 실행 결과는 각각 다음과 같습니다. 

 

1
2
3
4
5
6
7
import cv2
 
im = cv2.imread('test.jpg')
 
cv2.arrowedLine(im, (100200), (300350), (255,0,0), 2)
 
cv2.imwrite('result.jpg', im)
cs

 

단방향 화살표있는 선 추가.


파란색의 화살표 있는 선이 잘 그려졌죠? 여기서 주의해야 할 것은 출발좌표와 종료좌표입니다. 출발좌표, 종료좌표는 (x, y)로 x축, y축을 그려놓고 생각하면 됩니다.

 

 

 

만약에 양방향으로 화살표가 있는 선을 그리고 싶으면 어떻게 해야할까요? 양방향 선을 그리는 함수는 opencv 라이브러리에 딱히 없는 것 같고, 단방향 선을 출발점과 종료점을 바꿔서 두 개 그려주는 꼼수를 사용하면 그릴 수 있습니다. 한 줄 더 추가해주되 출발점 좌료와 종료점 좌표를 바꿔준 것을 추가해주면 됩니다. 

 

1
2
3
4
5
6
7
8
import cv2
 
im = cv2.imread('test.jpg')
 
cv2.arrowedLine(im, (100200), (300350), (255,0,0), 2)
cv2.arrowedLine(im, (300350), (100200), (255,0,0), 2)
 
cv2.imwrite('result.jpg', im)
cs

 

양방향 화살표있는 선 추가.

 

양쪽 끝에 모두 화살표가 있는 선이 추가되었습니다.