반응형
ㅇ OpenCV (3.2.0)을 이용한 파노라마 생성
- OpenCV에서는 여러 장의 사진을 합쳐서 하나의 파노라마 사진을 만들어내기 위한
- Stitcher 클래스를 제공한다.
- 이 클래스는 사진을 하나로 합치는 옵션을 2개 제공하는데,
- SCANS와 PANORAMA이다.
ㅇ 다음 3장의 사진들이 주어졌을 때,
|
|
|
ㅇSCANS 모드로 파노라마를 만들면,
ㅇ PANORAMA 모드로 만들면,
ㅇ C++ 구현 소스코드
#include <iostream>
#include <vector>
#include <opencv2/opencv.hpp>
#include <opencv2/stitching.hpp>
int main()
{
// 파노라마를 구성하는 사진들을 읽어서
vector에 저장한다.
vector<Mat> imgs;
// 3장의 이미지 이름들. sIMG_4939, ..., sIMG_4941
int img_start_num = 4939;
int img_end_num = 4941;
// 파일들을 읽어서 이미지 벡터에 저장
for (int i = img_start_num; i <= img_end_num; i++)
{
string _fName = "sIMG_";
_fName = "panorama_sea/"+_fName + to_string(i) + ".jpg";
Mat _img = imread(_fName.c_str());
if (_img.empty() == true)
{
cout << "unable to read " << _fName << endl;
return -1;
}
imgs.push_back(_img);
}
Mat pano;
// 파노라마 결과
// 파노라마 이미지 생성
Ptr<Stitcher> stitcher = Stitcher::create(Stitcher::PANORAMA, false);
Stitcher::Status status = stitcher->stitch(imgs, pano);
if (status != Stitcher::OK)
{
cout << "Can't stitch images, error code = " << int(status) << endl;
return -1;
}
// 결과를 파일로 저장
imwrite("panorama_320_scans.jpg", pano);
cout << "Panorama creation ended successfully." << endl;
return 0;
}
반응형
'Computer Vision by OpenCV' 카테고리의 다른 글
Histogram Equalization의 원리 (0) | 2017.04.11 |
---|---|
OpenCV normalize (0) | 2017.04.07 |
OpenCV Mat 이미지 형식 출력하기 (0) | 2017.01.14 |
Connected Component Analysis (1) | 2016.07.11 |
Mathematical morphology (모폴로지 연산) (0) | 2016.07.11 |