基于S32V的车道线检测

1.读取图像

/* SDI frame processing */
sdi_grabber lGrabber;

// ... SDI init

// Grabbing loop
while(1) {
SDI_Frame lFrame = lGrabber.FramePop();

// UMat is in lFrame.UMat
if (!lFrame.mUMat.empty() {
    // UMat processing

}

// We need to push the buffer back
lGrabber.FramePush(lFrame); 
}

相机将拍到的内容在SDI中以帧队列的形式存放,lGrabber调用FramePop()方法获取一帧图像数据,在SDI_Frame中的mUMat属性中就是我们将要操作的图片数据。

调用setInputImage()方法将待操作的UMat图像传入我们的车道线检测类中进行处理。

2.灰度化

我们从摄像头中获取到的数据都是VSDK_8UC3这中RGB彩色图片,但在APEX中的处理对象几乎都是VSDK_8UC1这种灰度图,所以首先要将彩色图转换为灰度图。

apexcv::ColorConverter colorcv2grey_op.Initialize(vsdkWarpOriImage, colorcv2rgb_op.eBGR888_TO_GREY,
			vsdkWrapImageGray);

colorcv2grey_op.ReconnectIO(vsdkOriImage, vsdkWrapImageGray);
colorcv2grey_op.Process();

转换后的图像:

3.透视变换

目前一种比较通用一种车道检测方法是将要检测的车道位置以ROI(region of interest)的方式画出来,将ROI区域变为鸟瞰区域,这样首先过滤掉了大量无关数据,同时因距离原因会造成的直线车道线变成梯形车道线,通过透视变换的方法做成的鸟瞰图,可以将这种梯形车道线还原成正常的直线。

透视变换的本质是将图像投影到一个新的视平面,其通用变换公式为:

(u,v)为原始图像像素坐标,(x=x’/w’,y=y’/w’)为变换之后的图像像素坐标。透视变换矩阵图解如下:

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值