본문 바로가기

개발/OpenCV

카메라 영상에 실시간 Text 넣기(합성 및 출력)

728x90
반응형
개발사양

 

OS : Windows 10

개발 언어 : C++, QT, OpenCV

카메라 : AXIS P5635 MK II PTZ

 

 

QT CMakeList.txt 에 OpenCV 라이브러리 추가

 

cmake_minimum_required(VERSION 3.5)
......

# OPENCV
set(OpenCV_DIR "C:/OpenCV/opencv4.5.3/build")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

......

 

OpenCV 가 설치된 경로로 지정하여 설정하여 줍니다.

현재 설치된 OpenCV 버전은 4.5.3 버전이 설치되어 있습니다.

 

 

 

OpenCV 카메라 영상 Text 입력

 

OpenCV 의 영상에 Text 를 입력할 수 있는 함수입니다.

 

void putText(Mat& img, const string& text, Point org, int fontFace, double fontScale, Scalar color, int thickness=1, int lineType=8, bool bottomLeftOrigin=false )

 

img

cv::Mat 형식의 이미지 입니다.

 

text

이미지 위에 그려질 텍스트입니다.

 

org

텍스트가 그려질 이미지 위에 좌표입니다.

 

fontface

텍스트 폰트 타입입니다.

폰트의 종류 파라미터는 다음과 같습니다.

 

 

FONT_HERSHEY_SIMPLEX        = 0, //!< normal size sans-serif font
FONT_HERSHEY_PLAIN          = 1, //!< small size sans-serif font
FONT_HERSHEY_DUPLEX         = 2, //!< normal size sans-serif font  
																	// (more complex than FONT_HERSHEY_SIMPLEX)
FONT_HERSHEY_COMPLEX        = 3, //!< normal size serif font
FONT_HERSHEY_TRIPLEX        = 4, //!< normal size serif font 
																	// (more complex than FONT_HERSHEY_COMPLEX)
FONT_HERSHEY_COMPLEX_SMALL  = 5, //!< smaller version of FONT_HERSHEY_COMPLEX
FONT_HERSHEY_SCRIPT_SIMPLEX = 6, //!< hand-writing style font
FONT_HERSHEY_SCRIPT_COMPLEX = 7, //!< more complexvariant of FONT_HERSHEY_SCRIPT_SIMPLEX
FONT_ITALIC                 = 16 //!< flag for italic font

 

fontScale

텍스트 크기입니다.

color

텍스트의 색상입니다.

thickness

텍스트 굵기입니다.

 

 

 

카메라 영상 Text 출력 실습

 

#include <opencv2/opencv.hpp>

......

// RTSP Stream Url 로 카메라 영상 가져오기
cv::VideoCapture cap(onvif_controller_->GetStreamUrl());
if (cap.isOpened() == false)
    return ;

// 영상 사이즈 확인
cv::Size size = cv::Size((int)cap.get(cv::CAP_PROP_FRAME_WIDTH), (int)cap.get(cv::CAP_PROP_FRAME_HEIGHT));
cv::Mat mat;
cap.read(mat);

// 출력할 문자열 만들기 - 카메라 이름과 현재 시간
auto strTime = QDateTime::currentDateTime().toString("yyyy.MM.dd hh-mm-ss");
std::string strText = "[";
strText += onvif_controller_->GetName();
strText += "] ";
std::string strPutText = strText + QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss").toStdString();
strText += strTime.toStdString();

// 영상에 문자열 넣기
cv::putText(mat, strPutText, cv::Point2f(size.width - 530, size.height - 20), cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(128, 0, 0), 2);

// 이미지 캡쳐
if (cv::imwrite("capture\\" + strText + ".png", mat) == false)
    return ;

cv::waitKey();
cap.release();

 

 

카메라 영상 Text 출력 결과

 

 

 

좌측 하단에 카메라 이름, 현재 시간을 출력하여 캡쳐한 이미지 입니다.

 

728x90

'개발 > OpenCV' 카테고리의 다른 글

카메라 영상에 실시간 Logo 이미지 합성  (0) 2023.02.06