基于Python深度学习的车辆车牌识别系统(PyTorch2卷积神经网络CNN+OpenCV4实现)视频教程 - 车牌矩阵定位

大家好,我是java1234_小锋老师,最近写了一套基于Python深度学习的车辆车牌识别系统(PyTorch2卷积神经网络CNN+OpenCV4实现)视频教程,持续更新中,计划月底更新完,感谢支持。

视频在线地址:

https://www.bilibili.com/video/BV1BdUnBLE6N/

课程简介:

本课程采用主流的Python技术栈实现,分两套系统讲解,一套是专门讲PyTorch2卷积神经网络CNN训练模型,识别车牌,当然实现过程中还用到OpenCV实现图像格式转换,裁剪,大小缩放等。另外一套是基于前面Django+Vue通用权限系统基础上,加了车辆识别业务模型,Mysql8数据库,Django后端,Vue前端,后端集成训练好的模型,实现车牌识别。

基于Python深度学习的车辆车牌识别系统(PyTorch2卷积神经网络CNN+OpenCV4实现)视频教程 - 车牌矩阵定位

前面我们做了图像预处理,接下来可以进行车牌矩阵定位:

复制代码
def verify_scale(rotate_rect):
    return True
​
​
def img_transform(rotate_rect, orig_img):
    return None
​
​
def locate_carPlate(orig_img, pred_img):
    carPlate_list = []  # 车牌列表
    temp1_orig_img = orig_img.copy()  # 拷贝图片 调试用
    temp2_orig_img = orig_img.copy()  # 拷贝图片 调试用
    # 从二值图像中查找轮廓的函数
    # cv2.RETR_EXTERNAL参数表示只检索最外层轮廓,
    # cv2.CHAIN_APPROX_SIMPLE参数表示压缩轮廓的水平、垂直和对角线部分,只保留端点。
    # 函数返回轮廓列表contours和层级信息heriachy,用于后续的车牌定位处理。
    contours, hierarchy = cv2.findContours(pred_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    for i, contour in enumerate(contours):
        """
        这段代码的功能是在调试图像上绘制检测到的轮廓。具体来说:
        cv2.drawContours()函数用于在temp1_orig_img图像上绘制轮廓
        contours是要绘制的轮廓点集
        i表示当前绘制第几个轮廓
        (0, 255, 255)是绘制的颜色(青色)
        2是线条粗细度
        这样可以可视化显示所有检测到的车牌候选区域轮廓,便于调试观察。
        """
        cv2.drawContours(temp1_orig_img, contours, i, (0, 255, 255), 2)
        """
        获取当前轮廓的最小外接矩形,cv2.minAreaRect()函数会计算能够完全包围轮廓的最小面积矩形,
        并返回一个包含矩形中心点坐标、宽度高度和旋转角度的元组,
        用于后续的车牌定位和矫正处理。
        """
        rotate_rect = cv2.minAreaRect(contour)
​
        # 根据矩形面积大小和长宽比判断是否是车牌
        if verify_scale(rotate_rect):
            # 裁剪车牌并且位置矫正
            car_plate = img_transform(rotate_rect, temp2_orig_img)
            cv2.imwrite('process_img/transform_img.jpg', car_plate)
            # 调整尺寸为后面CNN车牌识别做准备
            car_plate = cv2.resize(car_plate, (car_plate_w, car_plate_h))
            cv2.imwrite('process_img/resize_img.jpg', car_plate)
            carPlate_list.append(car_plate)
    return carPlate_list
​
​
if __name__ == '__main__':
    car_plate_w, car_plate_h = 136, 36  # 车牌宽高
    char_w, char_h = 20, 20  # 字符宽高
    char_model_path = "char.pth"
    test_images_root = 'images/test/'  # 测试图片路径
    files = list_all_files(test_images_root)
    files.sort()
​
    for file in files:
        img = cv2.imread(file)  # 读取图片
        pred_img = pre_process(img)  # 预处理图片
        locate_carPlate(img, pred_img)  # 车牌定位
相关推荐
wasp52036 分钟前
AgentScope深入分析-设计模式与架构决策分分析
开发语言·python·agent·agentscope
山土成旧客39 分钟前
【Python学习打卡-Day26】函数的艺术(上):从基础定义到参数魔法
开发语言·python·学习
roman_日积跬步-终至千里41 分钟前
【源码分析】StarRocks EditLog 写入与 Replay 完整流程分析
java·网络·python
gf13211111 小时前
python_检测音频人声片段
开发语言·python·音视频
爱笑的眼睛111 小时前
Flask上下文API:从并发陷阱到架构原理解析
java·人工智能·python·ai
程序猿追1 小时前
体验LongCat-Image-Edit图像编辑模型:在昇腾NPU上的部署与推理全流程分享
python·大模型·华为云
长安牧笛1 小时前
开发家庭宠物行为监测工具,识别宠物进食,饮水和活动情况,推送宠物健康报告。
python
budingxiaomoli1 小时前
Python基础语法(一)
python
小龙报1 小时前
【算法通关指南:算法基础篇 】双指针专题:1.唯一的雪花 2.逛画展 3.字符串 4.丢手绢
c语言·数据结构·c++·人工智能·深度学习·算法·信息与通信