[OpenCV] C++ OpenCV image annotating

2025. 11. 21. 15:00·OpenCV
728x90
반응형

C++에서 opencv를 이용해 이미지에 선, 원 등 다양한 도형을 그리는 방법입니다.

 

 

1.선 그리기  

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;

int main() {
    Mat image =imread("../test.jpg");

    Mat imageLine = image.clone();
    Point pointA(200,80);
    Point pointB(450, 80);

    line(imageLine, pointA, pointB, color=Scalar(255,255,0), thickness=3, 8, 0);
    imwrite("line_image.jpg", imageLine);

    return 0;
}

 => line(Input Output array, pt1, pt2, scalar(B,G,R), thickness, lineType, shift)

lineType은 line 안을 채울지 등에 대한 값이며 shift는 무조건 0으로 세팅하면 됩니다.

 

 

2. 원 그리기  

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;

int main() {
    Mat image =imread("../test.jpg");

    Mat circle_image = image.clone();
    Point circle_center(415,190);

    int radius = 100;

    circle(circle_image, circle_center, radius, Scalar(0,255, 0), 3, 8, 0);
    
    //안이 채워진 원 그리기
    circle(circle_image, circle_center, radius, Scalar(0,255, 0), -1, 8, 0);

    imwrite("cricle_image.jpg", circle_image);

    return 0;
}

 

 

3. 사각형 그리기  

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;

int main() {
    Mat image =imread("../test.jpg");

    Mat rect_image = image.clone();
    Point start_point(300,115);
    Point end_point(475, 225);

    rectangle(rect_image, start_point, end_point, Scalar(0,0,255), 3, 8, 0);

    imwrite("rect_image.jpg", rect_image);

    return 0;
}

 

4.  타원 그리기  

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;

int main() {
    Mat image =imread("../test.jpg");

    Mat imageEllipse = image.clone();
    Point ellipse_center(415,190);
    Point axis1(100, 50);
    Point axis2(125, 50);

    ellipse(imageEllipse, ellipse_center, axis1, 0, 0, 360, Scalar(255, 0, 0), 3, 8, 0);
    ellipse(imageEllipse, ellipse_center, axis2, 90, 0, 360, Scalar(0, 0, 255), 3, 8, 0);
    
    imwrite("ellipse_image.jpg", imageEllipse);

    return 0;
}

 

4-1. 반원 반만 채우기

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;

int main() {
    Mat image =imread("../test.jpg");

    Mat halfEllipse = image.clone();
    Point ellipse_center(415,190);
    Point axis1(100, 50);

    ellipse(halfEllipse, ellipse_center, axis1, 0, 180, 360, Scalar(255, 0, 0), 3, 8, 0);
    ellipse(halfEllipse, ellipse_center, axis1, 0, 0, 180, Scalar(0, 0, 255), -2, 8, 0);
    
    imwrite("ellipse_image.jpg", halfEllipse);

    return 0;
}

 

5. text 삽입  

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;

int main() {
    Mat image =imread("../test.jpg");

    Mat imageText = image.clone();
    putText(imageText, "A beautiful flower!~", Point(50, 350), FONT_HERSHEY_COMPLEX, 1.5, Scalar(250, 250, 100));
    
    imwrite("text_image.jpg", imageText);

    return 0;
}

 

 

 

[참고자료]

https://learnopencv.com/annotating-images-using-opencv/

728x90
반응형
저작자표시 (새창열림)

'OpenCV' 카테고리의 다른 글

[OpenCV] C++ OpenCV Image Thresholding  (0) 2026.02.09
[OpenCV] C++ OpenCV / Image Filtering Using Convolution  (0) 2025.12.05
[OpenCV] C++ OpenCV 이미지 다루기 기초  (0) 2025.11.12
[OpenCV] C++ OpenCV 설치 (with Linux)  (0) 2025.11.06
[OpenCV] OpenCV dnn을 이용해 딥러닝 모델 사용하기  (1) 2024.02.08
'OpenCV' 카테고리의 다른 글
  • [OpenCV] C++ OpenCV Image Thresholding
  • [OpenCV] C++ OpenCV / Image Filtering Using Convolution
  • [OpenCV] C++ OpenCV 이미지 다루기 기초
  • [OpenCV] C++ OpenCV 설치 (with Linux)
ga.0_0.ga
ga.0_0.ga
    반응형
    250x250
  • ga.0_0.ga
    ##뚝딱뚝딱 딥러닝##
    ga.0_0.ga
  • 전체
    오늘
    어제
    • 분류 전체보기 (195)
      • Paper Review (56)
        • Video Scene Graph Generation (6)
        • Image Scene Graph Generation (18)
        • Graph Model (5)
        • Key Information Extraction (4)
        • Fake Detection (2)
        • Text to Image (1)
        • Diffusion Personalization (4)
        • LLM & VLM (4)
        • etc (12)
      • AI Research (49)
        • Deep Learning (30)
        • Artificial Intelligence (15)
        • Data Analysis (4)
      • Pytorch (13)
      • ONNX (5)
      • OpenCV (7)
      • Error Note (35)
      • Linux (2)
      • Docker (3)
      • Etc (7)
      • My Study (16)
        • Algorithm (10)
        • Project (4)
        • Interview (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    pandas
    Inductive bias
    torch.nn
    나이브 베이즈 분류
    dataset
    RuntimeError
    ONNX
    transformer
    HRNet
    Logistic regression
    linear regression
    3dinput
    i3d
    fine tuning
    forch.nn.functional
    GCN
    알고리즘
    오차 역전파
    Activation Function
    contiguous
    정규화
    pytorch
    dataloader
    TypeError
    permute
    tensorflow
    그래프신경망
    차원의 저주
    JNI
    활성화 함수
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
ga.0_0.ga
[OpenCV] C++ OpenCV image annotating
상단으로

티스토리툴바