C#/C# OpenCV/
C# OpenCV 3-4. 기하학적 변환
2019. 11. 1.
대표함수
WarpAffine 3점을 기준으로 이미지를 변환
WarpPerspective 4점을 기준으로 이미지를 변환
Example Code
using System;
using System.Windows.Forms;
using OpenCvSharp;
namespace warptest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Mat src = Cv2.ImRead("test.jpg");
Cv2.ImShow("source", src);
Point2f[] srcpoint = new Point2f[3] { new Point2f(200, 200), new Point2f(200, 600), new Point2f(600, 200) };
Point2f[] dstpoint = new Point2f[3] { new Point2f(100, 100), new Point2f(200, 500), new Point2f(400, 100) };
Mat affinematrix = Cv2.GetAffineTransform(srcpoint, dstpoint);
Mat affine = new Mat();
Cv2.WarpAffine(src, affine, affinematrix, src.Size());
Cv2.ImShow("affine", affine);
Point2f[] srcpoint2 = new Point2f[4] { new Point2f(153, 400), new Point2f(0, 610),
new Point2f(469, 400), new Point2f(599, 610) };
Point2f[] dstpoint2 = new Point2f[4] { new Point2f(153, 400), new Point2f(153, 610),
new Point2f(469, 400), new Point2f(469, 610) };
Mat perspectivematrix = Cv2.GetPerspectiveTransform(srcpoint2, dstpoint2);
Mat perspective = new Mat();
Cv2.WarpPerspective(src, perspective, perspectivematrix, src.Size());
Cv2.ImShow("perspective", perspective);
}
}
}
Explain Code
Mat src = Cv2.ImRead("test.jpg");
Cv2.ImShow("source", src);
원본이미지 로드, 보여주기
Point2f[] srcpoint = new Point2f[3] { new Point2f(200, 200), new Point2f(200, 600), new Point2f(600, 200) };
Point2f[] dstpoint = new Point2f[3] { new Point2f(100, 100), new Point2f(200, 500), new Point2f(400, 100) };
Mat affinematrix = Cv2.GetAffineTransform(srcpoint, dstpoint);
3점변환(Affine)에 사용할 원본이미지의 포인트, 변환할 포인트 지정
Cv2.GetAffineTransform 을 이용 매트릭스 변환
Mat affine = new Mat();
Cv2.WarpAffine(src, affine, affinematrix, src.Size());
Cv2.ImShow("affine", affine);
변환된 이미지를 저장할 Mat선언
Cv2.WarpAffine을 이용 이미지변환, 보여주기
Point2f[] srcpoint2 = new Point2f[4] { new Point2f(153, 400), new Point2f(0, 610),
new Point2f(469, 400), new Point2f(599, 610) };
Point2f[] dstpoint2 = new Point2f[4] { new Point2f(153, 400), new Point2f(153, 610),
new Point2f(469, 400), new Point2f(469, 610) };
Mat perspectivematrix = Cv2.GetPerspectiveTransform(srcpoint2, dstpoint2);
4점변환(Perspective)에 사용할 원본이미지의 포인트, 변환할 포인트 지정
Cv2.GetPerspectiveTransform 을 이용 매트릭스 변환
Mat perspective = new Mat();
Cv2.WarpPerspective(src, perspective, perspectivematrix, src.Size());
Cv2.ImShow("perspective", perspective);
변환된 이미지를 저장할 Mat선언
Cv2.WarpPerspective를 이용 이미지변환, 보여주기
결과
Affine
Perspective