주요 함수
그리기 방식 | 세부 그리기 방식 | 함수 이름 |
---|---|---|
선 그리기 | 직선 그리기 | line() |
화살표 그리기 | arrowedLine() | |
마커 그리기 | drawMarker() | |
도형 그리기 | 사각형 그리기 | rectangle() |
원 그리기 | circle() | |
타원 그리기 | ellipse() | |
다각형 그리기 | polylines() , fillPoly() | |
문자열 출력하기 | 문자열 출력하기 | putText() |
출력 문자열의 크기 계산 | getTextSize() |
아래 첫번째 사진은 원본 프레임이고, 두번째 사진은 line()
과 putText()
를 이용하여 선과 텍스트를 그려 넣은 프레임이다.
waitKey()
: 키보드 입력 대기
waitKeyEx()
를 사용setMouseCallback()
: 마우스 이벤트 처리를 위한 콜백 함수 등록
onMouse
: 마우스 콜백 함수 이름. 아래와 같은 형식의 함수를 정의하여 인자로 지정해주자.
typedef void (*MouseCallback)(int event, int x, int y, int flags, void* userdata);
flags
를 이용할 때는 ①과 같이 비트 연산으로 비교하자.flags & EVENT_FLAG_LBUTTON
flags == EVENT_FLAG_LBUTTON
아래는 마우스 콜백 함수를 이용해 마우스로 그림을 그린 사진이다. 마우스 이벤트는 빠르게 발생하는 것이 아니라서 사용자가 마우스를 빠르게 움직이면 띄엄띄엄 발생할 수도 있다. 그렇기 때문에 이벤트가 발생할 때 매번 점을 찍는 방법보다는, 이벤트가 발생하기 전 위치를 기록해두고 이전 포인트에서 현재 포인트까지 직선을 그리는 방법으로 더 부드러운 그림을 그릴 수 있다.
createTrackbar()
: 트랙바 생성 함수, 정상 동작하면 1을 반환하고 실패하면 0을 반환함.int* value
: 트랙바 위치 값을 받을 정수형 변수의 주소로, 보통은 전역 변수 형태의 정수값 변수를 하나 설정하고 그 주소를 지정한다.onChange
: 트랙바 위치를 변경할 때마다 호출될 콜백 함수 이름(함수의 포인터). 만약 NULL을 지정하면 콜백 함수는 호출되지 않고 value
로 지정한 변수 값만 갱신됨.typedef vold (*TrackbarCallback)(int pos, void* userdata);
📙강의 - 강사 황선규