机器人导航+OPENCV透视变换示例代码

 透视变换又称四点变换,所以不能用于5边形这样的图形变换,不是真正的透视变换,但是这个方法可以把机器人看到的图像转换为俯视图,这样就可以建立地图,要不然怎么建立地图呢。

void CrelaxMyFriendDlg::OnBnClickedOk()
{
	hdc = this->GetDC()->GetSafeHdc();
	// TODO: 在此添加控件通知处理程序代码
	string addrImg = "c:/Users/actorsun/Pictures/";
	string addrVideo = "c:/Users/actorsun/Videos/";
	string addr = addrImg + "1.png";
	Mat relax, positive, gray;
	relax = imread(addr);
	
	Point2f src_points[4];
	Point2f dst_points[4];
	src_points[0] = Point2f(100, 100);
	src_points[1] = Point2f(500, 100);
	src_points[2] = Point2f(150, 600);
	src_points[3] = Point2f(450, 610);

	dst_points[0] = Point2f(0, 0);
	dst_points[1] = Point2f(227,0);
	dst_points[2] = Point2f(0, 227);
	dst_points[3] = Point2f(227, 227);
	Mat rotation, img_warp;
	rotation = getPerspectiveTransform(src_points, dst_points);
	warpPerspective(relax, img_warp, rotation, relax.size());
	imshow(img_warp);

	imshow(gray);
	//在运动物体上面画个矩形框,像我的监控一样
}

机器人导航+OPENCV透视变换示例代码_第1张图片

意思意思就可以了。

那2函数很简单的:

格式:Mat    getPerspectiveTransform(四个点数组,四个点数组,第三个参数不用管);

格式:warpPerspective(srcMat,dstMat,上面那个函数返回值即转换矩阵,尺寸一般是srcMat.size());

你可能感兴趣的:(opencv,人工智能,计算机视觉)