반응형
OPENCV 여러개 이미기 합성하고 합치기
OpenCV (Open Source Computer Vision)은 컴퓨터비전 개발을 위한 오픈소스 라이브러리이다. 초기에는 인텔이 개발하였기 때문에, CPU에서 가속되는 IPP(Intel Performance Primitives)를 지원한다. 현재 OpenCV 는 윈도우, 리눅스 등에서 사용 가능한 크로스 플랫폼이며 오픈소스 BSD 허가서 하에서 무료로 사용할 수 있다. OpenCV는 TensorFlow, Torch / PyTorch 및 Caffe의 딥러닝 프레임워크를 지원한다. (위키백과, 우리 모두의 백과사전)
여러개 이미지 합성해서 출력하는 C++ 예제
두개의 카메라로 캡처한 이미지를 합성해서, 총 4개의 이미지를 생성한다. OpenCV API 인 hconcat 과 vconcat 을 사용하여 하나의 이미지로 합치고 imshow 로 출력한다.
테스트환경
테스트를 위한 Host PC 에는 Ubuntu 18.04 와 OpenCV 3.2.0 가 설치되어 있다.
$ pkg-config --modversion opencv
3.2.0
OpenCV CMake 작성
다음과 같이 CMakeLists.txt 를 작성한다.
cmake_minimum_required(VERSION 3.0)
project(multi-image-concat)
find_package(OpenCV REQUIRED)
set(
CMAKE_RUNTIME_OUTPUT_DIRECTORY
${CMAKE_HOME_DIRECTORY}
)
add_executable(
multi-image-concat
src/main.cpp
)
target_include_directories(
multi-image-concat
PRIVATE
${OpenCV_INCLUDE_DIRS}
)
target_link_libraries(
multi-image-concat
${OpenCV_LIBRARIES}
)
message ("OpenCV_LIBRARIES = " ${OpenCV_LIBRARIES})
message ("OpenCV_INCLUDE_DIRS = " ${OpenCV_INCLUDE_DIRS})
OpenCV 예제 코드 작성
다음과 같이 코드를 작성한다.
#include "opencv2/opencv.hpp"
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
cout << "opencv version : " << CV_VERSION << endl;
// read 2 images
Mat imgl, imgr;
imgl = imread("./img/capture0.jpg");
imgr = imread("./img/capture1.jpg");
// resize 2 images to small (540x270)
Mat img1, img2;
resize(imgl, img1, Size(540,270));
resize(imgr, img2, Size(540,270));
// create new 2 image more
Mat img3, img4;
img3 = img1 + img2;
img4 = 0.5*img1 + 0.5*img2;
if(!imgl.empty() || !imgr.empty())
{
Mat main;
Mat h1, h2;
hconcat(img1, img2, h1);
hconcat(img3, img4, h2);
vconcat(h1, h2, main);
imshow("main", main);
waitKey(0);
}
else
{
cout << "image not found " << CV_VERSION << endl;
}
return 0;
}
위 코드의 간단한 설명은 다음과 같다.
- imread 를 통해 이미지 파일 2장을 읽어온다.
- resize 를 통해 이미지 파일의 크기를 축소한다.
- 축소된 이미지로 2장의 합성 이미지를 생성한다.
- hconcat 과 vconcat 을 사용하여 하나의 이미지로 합치고 imshow 로 출력한다.
참고자료
전체 코드는 makepluscode github 를 참고한다.
https://github.com/makepluscode/opencv-examples/tree/master/002-multi-image-concat
반응형
'프로그래밍 > OpenCV' 카테고리의 다른 글
[OPENCV] SGBM vs StereoBM 깊이맵 결과 비교 (1) | 2022.06.15 |
---|---|
[OPENCV] 스테레오 깊이맵 성능 높이기 (0) | 2022.06.15 |
[OPENCV] GSTREAMER 를 이용한 이미지 캡처 (0) | 2022.06.13 |
[OPENCV] 스테레오 카메라 StereoBM 예제 첫번째 (0) | 2022.06.12 |
[OPENCV] Ubuntu 18.04 OpenCV 4.2.0 설치하기 (0) | 2022.06.10 |
[OPENCV] MAT 클래스 type 이해하기 (0) | 2022.06.10 |
[OPENCV] Ubuntu 20.04 OpenCV 4.0.0 설치하기 (0) | 2022.04.03 |
[OPENCV] CMake opencv 샘플 예제 (0) | 2021.10.03 |