【opencv】手动提取桌面扑克

准备: 1.用画图打开图片,就可以在软件右下角看到图片的像素坐标 2.分别找出扑克四个点的坐标

下面看代码:

#include<iostream>
#include<opencv2opencv.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;
 }

运行结果:

总结: 难度慢慢体现在不熟悉的变量类型及函数

经验分享 程序员 微信小程序 职场和发展