自动透视校正为四边形对象

参考opencv开源上的,跑通了  注释了一下,以便后续学习

 

 

#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>



cv::Point2f center(0,0);

cv::Point2f computeIntersect(cv::Vec4i a,cv::Vec4i b)
{
	int x1 = a[0],y1 = a[1],x2 = a[2],y2 = a[3],x3 = b[0],y3 = b[1],x4 = b[2],y4 = b[3];

	if (float d = ((float)(x1 - x2)*(y3 - y4)-(y1 - y2)*(x3 - x4)))
	{
		cv::Point2f pt;
		pt.x = ((x1*y2 - y1*x2)*(x3 - x4) - (x1 - x2)*(x3*y4 - y3*x4))/d;
		pt.y = ((x1*y2 - y1*x2)*(y3 - y4) - (y1 - y2)*(x3*y4 - y3*x4))/d;
		return pt;
	}
	else
		return cv::Point2f(-1,-1);
}

void sortCorners(std::vector<cv::Point2f>& corners,cv::Point2f center)
{
	std::vector<cv::Point2f> top,bot;

	for (unsigned int i =0;i< corners.size();i++)
	{
		if
  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值