OpenCV에서는 org.opencv.imgproc.Imgproc 클래스가 제공하는 drawMarker() 메서드를 사용하면 이미지 위에 다양한 형태의 마커를 손쉽게 그릴 수 있습니다. 이 메서드는 객체 검출 결과 표시, 관심 영역(ROI) 강조 등 다양한 용도로 활용됩니다.
drawMarker() 메서드의 주요 매개변수
- img – 마커를 그릴 대상 이미지를 나타내는 Mat 객체입니다.
- position – 마커를 표시할 위치를 지정하는 Point 객체입니다.
- color – 마커의 색상을 지정하는 Scalar 객체입니다(BGR 순서).
- markerType – 마커의 종류를 지정하는 정수 상수입니다. 예: MARKER_SQUARE, MARKER_CROSS, MARKER_STAR 등.
- size – 마커의 크기를 픽셀 단위로 지정하는 정수 값입니다.
- thickness – 마커 선의 두께를 지정하는 정수 값입니다.
예제 코드
아래는 이미지 파일을 불러온 뒤, 특정 위치에 사각형 마커를 그리는 전체 예제입니다.
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Scalar;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class DrawingMarkers {
public static void main(String args[]) throws Exception {
// OpenCV 핵심 네이티브 라이브러리 로드
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// 이미지 파일 읽기
String file = "D:\\Images\\elephant.jpg";
Mat src = Imgcodecs.imread(file);
// 마커의 색상과 위치 설정
Scalar color = new Scalar(0, 0, 125); // BGR 값 (붉은 계열)
Point point = new Point(150, 260);
// 마커 그리기 (사각형 마커, 크기 150, 두께 8)
Imgproc.drawMarker(src, point, color, Imgproc.MARKER_SQUARE, 150, 8, Imgproc.LINE_8);
// 결과 이미지 출력
HighGui.imshow("Drawing Markers", src);
HighGui.waitKey();
}
}입력 이미지

실행 결과
위 프로그램을 실행하면 지정한 좌표(150, 260)에 붉은색 사각형 마커가 그려진 이미지가 아래와 같은 창에 표시됩니다.

참고 사항
- 마커 종류는 MARKER_SQUARE(사각형), MARKER_CROSS(십자), MARKER_TILTED_CROSS(기울어진 십자), MARKER_STAR(별), MARKER_DIAMOND(다이아몬드), MARKER_TRIANGLE_UP/DOWN(삼각형) 등으로 변경할 수 있습니다.
- Scalar의 색상 값은 RGB가 아닌 BGR 순서로 지정해야 하므로 주의해야 합니다.
- 마커 크기(size)는 마커 전체 길이를 결정하며, thickness 값을 늘리면 더 굵은 선으로 표시됩니다.