OpenCV C++ basic_4 기본 Perspective변형

최준혁·2021년 6월 20일

OpenCV_Basic

목록 보기
4/4

OpenCV 기본 변형 Perspective 변형

1. Warping and Top view

Warp: 점(x,y) -> (x', y') 변환

Warping 과정

1. Warping 하기 전의 좌표 추출

  • vector< Point2f > Cornes(4);

2. Warping 후의 좌표 생성.

  • vector< Point2f > WarpCornes(4);

3. Warping 후 이미지 생성

  • Mat warpimg(Size(row, col), in_img.type())

4. Transformation Mat구하기

  • Mat trans = getPerspectiveTransform(이전 좌표, 이후 좌표)

5. Warping 하기

  • warpPerspective(img, warpimg, trans, Size(row, col))
    언덕 인식 어떻게 하냐?
#include <opencv4/opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc, char** argv)
{
  Mat img = imread("warping.jpg");
  resize(img, img, Size(800, 1200));
  vector<Point2f> corners(4);
  corners[0] = Point2f(60, 367);
  corners[1] = Point2f(169, 733);
  corners[2] = Point2f(671, 541);
  corners[3] = Point2f(719, 197);

  Size warpSize(600, 450);
  Mat warpImg(warpSize, img.type());

  vector<Point2f> WarpCorners(4);
  WarpCorners[0] = Point2f(0,0);
  WarpCorners[1] = Point2f(0, warpImg.rows);
  WarpCorners[2] = Point2f(warpImg.cols, warpImg.rows);
  WarpCorners[3] = Point2f(warpImg.cols, 0);

  Mat trans = getPerspectiveTransform(corners, WarpCorners);

  warpPerspective(img, warpImg, trans, warpSize);

  imshow("img_ori", img);
  imshow("img_warp", warpImg);
 	waitKey(0);

  return 0;
}
profile
3D Vision, VSLAM, Robotics, Deep_Learning

0개의 댓글