准备:
1.用画图打开图片,就可以在软件右下角看到图片的像素坐标
2.分别找出扑克四个点的坐标
下面看代码:
#include<iostream>
#include<opencv2\opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("D:\\photogallery\\其他\\扑克9.jpg");
//出发点
Point2f src[4] = { {517,400},{634,331},{688,492},{806,419} };
//目的地
float w = 250, h = 350;
Point2f dest[4] = { { 0.0,0.0},{ w,0.0 },{ 0.0,h },{ w,h } };
//变换矩阵
Mat matrix, imgWarp;
//透视变换
matrix = getPerspectiveTransform(src, dest);
warpPerspective(img, imgWarp, matrix, Size(w, h));
for (int i = 0; i < 4; i++)
{
circle(img, src[i], 10, Scalar(0, 0, 0), FILLED);
}
imshow("img", img);
imshow("imgWarp", imgWarp);
waitKey(0);
return 0;
}
运行结果:
总结:
难度慢慢体现在不熟悉的变量类型及函数