热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python实现车牌定位及分割

具体步骤1、将采集到的彩色车牌图像转换成灰度图2、灰度化的图像利用高斯平滑处理后,再对其进行中直滤波3、使用Sobel算子对图像进行边缘检测4、对二值化的图像进行腐蚀,膨胀,开运算,闭运算的形态学组合变换5、对形态学变换后的图像进行轮廓查找,根据车牌的长宽比提取车牌<!more>代码实现图像灰度化graycv2.cvtColor(img,cv2.COLORBGR2GR...

具体步骤

1、将采集到的彩色车牌图像转换成灰度图
2、灰度化的图像利用高斯平滑处理后,再对其进行中直滤波
3、使用Sobel算子对图像进行边缘检测
4、对二值化的图像进行腐蚀,膨胀,开运算,闭运算的形态学组合变换
5、对形态学变换后的图像进行轮廓查找,根据车牌的长宽比提取车牌

代码实现

图像灰度化

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

高斯平滑,中值滤波处理

gaussian = cv2.GaussianBlur(gray, (3, 3), 0, 0, cv2.BORDER_DEFAULT)
median = cv2.medianBlur(gaussian, 5)

对二值化的图像进行腐蚀,膨胀,开运算,闭运算的形态学组合变换

# 膨胀和腐蚀操作的核函数
element1 = cv2.getStructuringElement(cv2.MORPH_RECT, (9, 1))
element2 = cv2.getStructuringElement(cv2.MORPH_RECT, (8, 6))
# 膨胀一次,让轮廓突出
dilation = cv2.dilate(binary, element2, iteratiOns= 1)
# 腐蚀一次,去掉细节
erosion = cv2.erode(dilation, element1, iteratiOns= 1)
# 再次膨胀,让轮廓明显一些
dilation2 = cv2.dilate(erosion, element2,iteratiOns= 3)

对形态学变换后的图像进行轮廓查找,根据车牌的长宽比提取车牌

1、查找车牌区域

def findPlateNumberRegion(img):
    region = []
    # 查找轮廓
    contours,hierarchy = cv2.findContours(img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

    # 筛选面积小的
    for i in range(len(contours)):
        cnt = contours[i]
        # 计算该轮廓的面积
        area = cv2.contourArea(cnt)

        # 面积小的都筛选掉
        if (area <2000):
            continue

        # 轮廓近似,作用很小
        epsilon = 0.001 * cv2.arcLength(cnt,True)
        approx = cv2.approxPolyDP(cnt, epsilon, True)

        # 找到最小的矩形,该矩形可能有方向
        rect = cv2.minAreaRect(cnt)
        print "rect is: "
        print rect

        # box是四个点的坐标
        box = cv2.cv.BoxPoints(rect)
        box = np.int0(box)

        # 计算高和宽
        height = abs(box[0][1] - box[2][1])
        width = abs(box[0][0] - box[2][0])

        # 车牌正常情况下长高比在2.7-5之间
        ratio =float(width) / float(height)
        if (ratio > 5 or ratio <2):
            continue

        region.append(box)

    return region

2、用绿线绘出车牌区域和切割车牌

    # 用绿线画出这些找到的轮廓
    for box in region:
        cv2.drawContours(img, [box], 0, (0, 255, 0), 2)
    ys = [box[0, 1], box[1, 1], box[2, 1], box[3, 1]]
    xs = [box[0, 0], box[1, 0], box[2, 0], box[3, 0]]
    ys_sorted_index = np.argsort(ys)
    xs_sorted_index = np.argsort(xs)

    x1 = box[xs_sorted_index[0], 0]
    x2 = box[xs_sorted_index[3], 0]

    y1 = box[ys_sorted_index[0], 1]
    y2 = box[ys_sorted_index[3], 1]

    img_org2 = img.copy()
    img_plate = img_org2[y1:y2, x1:x2]

以上就是Python实现车牌定位及分割的详细内容,更多请关注 第一PHP社区 其它相关文章!


推荐阅读
  • 最适合初学者的编程语言
    本文探讨了适合编程新手的最佳语言选择,包括Python、JavaScript等易于上手且功能强大的语言,以及如何通过有效的学习方法提高编程技能。 ... [详细]
  • 本文提供了处理WordPress网站中出现过多重定向问题的方法,包括检查DNS配置、安装SSL证书以及解决数据库连接错误等步骤。 ... [详细]
  • 本文探讨了一种常见的C++面试题目——实现自己的String类。通过此过程,不仅能够检验开发者对C++基础知识的掌握程度,还能加深对其高级特性的理解。文章详细介绍了如何实现基本的功能,如构造函数、析构函数、拷贝构造函数及赋值运算符重载等。 ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
  • 本文对宋代著名诗人吕渭老的作品《情久长》进行了细致的翻译和赏析,深入探讨了诗中蕴含的情感与艺术特色。 ... [详细]
  • 本文详细介绍如何安装和配置DedeCMS的移动端站点,包括新版本安装、老版本升级、模板适配以及必要的代码修改,以确保移动站点的正常运行。 ... [详细]
  • 本文提供了一种通过调整内核电压来增强设备抗干扰能力的方法,以解决部分杰里AC696X设备在LDO15模式下通话时出现的重启问题。 ... [详细]
  • 探讨了在HTML表单中使用元素代替进行表单提交的方法。 ... [详细]
  • 如何在PPT中创建交互式跳转按钮
    许多企业在日常工作中都会用到PPT,但你知道如何在PPT中制作一个可以实现页面跳转的按钮吗?本文将详细介绍在PPT中创建跳转按钮的方法和步骤。 ... [详细]
  • 本文对元代诗人萨都剌的《酹江月·姑苏台怀古》进行了详尽的翻译和赏析,深入探讨了诗中蕴含的历史情感与文化内涵。 ... [详细]
  • 一文详解Linux
    Linuxnetfilter与VRF实验环境如下图所示:配置如下:#!binbashsudoipnetnsaddns1sudoiplinkaddns1veth1typevethpe ... [详细]
  • 网络分析仪中的噪声参数解析
    本文探讨了网络分析仪中噪声参数的作用及其对测量精度的影响。通过深入分析噪声参数如何随源阻抗变化,解释了其在不同测量条件下的表现。 ... [详细]
  • JavaScript 跨域解决方案详解
    本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ... [详细]
  • 3DSMAX制作超现实的体育馆模型
    这篇教程是向脚本之家的朋友介绍3DSMAX制作超现实的体育馆模型方法,教程制作出来的体育馆模型非常地不错,不过教程有点难度,需要有一定基础的朋友学习,推荐到脚本之家,喜欢的朋友可 ... [详细]
  • 本文介绍了如何在AngularJS应用中使用ng-repeat指令创建可单独点击选中的列表项,并详细描述了实现这一功能的具体步骤和代码示例。 ... [详细]
author-avatar
流浪1种无奈
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有