车牌提取过程 一个典型的车辆检测一般包括以下2个部分:车辆图像获取、车牌定位。 代码
<火山程序 类型 = "通常" 版本 = 1 />
包 火山.程序
类 启动类 <公开 基础类 = 程序类>
{
方法 启动方法 <公开 类型 = 整数>
{
// 在此处填入自己的代码
变量 _目标图像 <类型 = CV矩阵类>
变量 _目标图像_backup <类型 = CV矩阵类>
// 将图片转为灰度图像
_目标图像 = CV核心.读入图像 ("./car_Code2.jpg", )
// 将原图做个备份
_目标图像_backup = _目标图像.复制 ()
// 处理彩色图片为灰度图片
CV核心.颜色空间转换 (_目标图像, _目标图像, , )
// 高斯模糊滤波器对图像进行模糊处理
CV核心.高斯模糊 (_目标图像, _目标图像, CV尺寸类.创建尺寸 (3, 3), 0, , )
// CV核心.双边滤波 (_目标图像, _目标图像, 13, 15, 15, )
// canny边缘检测
CV核心.边缘检测Canny (_目标图像, _目标图像, 500, 200, 3, )
CV核心.显示图像 ("显示车牌", _目标图像, , )
// 指定核大小,如果效果不佳,可以试着将核调大
变量 kernelX <类型 = CV矩阵类>
变量 kernelY <类型 = CV矩阵类>
kernelX = CV核心.获取结构元素 (, CV尺寸类.创建尺寸 (25, 1), )
kernelY = CV核心.获取结构元素 (, CV尺寸类.创建尺寸 (1, 19), )
// 对图像进行膨胀腐蚀处理
CV核心.膨胀 (_目标图像, _目标图像, kernelX, CV坐标点.新建坐标 (-1, -1), 2, , )
CV核心.腐蚀 (_目标图像, _目标图像, kernelX, CV坐标点.新建坐标 (-1, -1), 4, , )
CV核心.膨胀 (_目标图像, _目标图像, kernelX, CV坐标点.新建坐标 (-1, -1), 2, , )
CV核心.腐蚀 (_目标图像, _目标图像, kernelY, CV坐标点.新建坐标 (-1, -1), 1, , )
CV核心.膨胀 (_目标图像, _目标图像, kernelY, CV坐标点.新建坐标 (-1, -1), 2, , )
// 再对图像进行模糊处理
CV核心.中值模糊 (_目标图像, _目标图像, 15)
CV核心.中值模糊 (_目标图像, _目标图像, 15)
变量 _图像中的轮廓 <类型 = CV坐标容器数组>
变量 _车牌图像 <类型 = CV矩阵类>
// 寻找图像中的车牌轮廓
CV核心.寻找轮廓 (_目标图像, _图像中的轮廓, , , )
// 遍历所有寻找到的轮廓信息
计次循环 (_图像中的轮廓.取成员数 ())
{
变量 count <类型 = 整数>
变量 coordidtes <类型 = CV坐标容器>
coordidtes = _图像中的轮廓.取成员 (取循环索引 ())
变量 rect <类型 = CV矩形类>
rect = CV核心.计算轮廓最小外接正交矩形 (coordidtes)
变量 _cal_data <类型 = 小数>
_cal_data = (小数)rect.宽度 / (小数)rect.高度
// 中国普遍的车牌宽高比都是大于2.1小于等于4.0
如果 (_cal_data >= 2.1 && _cal_data <= 4.0)
{
CV核心.画矩形 (_目标图像_backup, rect, CV标量类.新建三通道 (255, 255, 0), , )
CV核心.提取ROI区域图像 (_目标图像_backup, rect, _车牌图像)
}
}
// 显示图像
CV核心.显示图像 ("resultimg", _目标图像_backup, , )
CV核心.显示图像 ("code", _车牌图像, , )
CV核心.等待按键 (0)
CV核心.关闭所有窗口 ()
返回 (1)
}
}
效果图
|