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())
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;
}