通过aruco码定位实现红绿灯检测(一)

通过aruco码定位实现红绿灯检测(一)


前言

红绿灯检测属于小物体检测问题,虽然跟交通标志牌类似,都属于静态物体检测,但红绿灯的状态是实时发生变化的,这提升了检测的难度。所以我们根据识别到的aruco码进行划定区域。


提示:以下是本篇文章正文内容,下面案例可供参考

一、aruco码是什么?

姿态估计(Pose estimation)在计算机视觉领域扮演着十分重要的角色: 机器人导航、增强现实等。这一过程的基础是找到现实世界和图像投影之间的对应点。最为流行的一个途径是基于二进制平方的标记,它可以提供四个角来获取相机的信息,内部的二进制编码允许应用错误检测及校正。

aruco库是检测二进制marker的非常流行的库,可根据图像和激光雷达参数的3D点云实现2D和3D的匹配,找到至少4个二维像素和3D点云点的对应点,根据这四组对应点和相机内外参数估计相机姿态。

# 解算位姿的函数
def CalculatePositon(Point3D, Point2D, K):
	''''''
	Dis = np.array([0,0,0,0,0.])
	Point3D = Point3D  # 去中心化
	ret, RvecW2C, tW2C = cv2.solvePnP(Point3D, Point2D, K, Dis)  # 解算位姿
	RW2C = cv2.Rodrigues(RvecW2C)[0]
	# RC2W = np.linalg.inv(RW2C)
	tC2W = -np.linalg.inv(RW2C).dot(tW2C)
	New_tC2W = tC2W.flatten()  # 相机在世界坐标系下的坐标
	CamPosition = -RW2C.dot(New_tC2W)   # 世界坐标系在相机坐标系下的坐标
	return CamPosition

def DealMarker(Img, K, Show = False):
	CamPosition = []
	MarkerROI = None
	Corners, IDs, _ = aruco.detectMarkers(Img, dict)
	if len(Corners) == 2:  # 如果检测点
		Point3D = np.empty((0, 3))
		Point2D = np.empty((0, 2
  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值