xrea 发表于 2023-4-15 20:48:34

火山OPENCV简单案例-车牌检测

车牌提取过程一个典型的车辆检测一般包括以下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)
    }
}

效果图



qzuser 发表于 2023-7-25 17:36:29

请问这个是在窗口里运行的吗
页: [1]
查看完整版本: 火山OPENCV简单案例-车牌检测