yolov3+opencv+视频检测保存

目录

1.opencv的安装

1)去官网下载opencv

2)解压下载下来的zip包

 3)安装必须库和cmake-gui

4)cmake-gui编译

5)make和make install

6)路径设置

7)测试一下:

2.yolov3源码更改与排错

Error1:cv_window_normal未定义

Error2:showimage参数不足

3.测试视频与保存

1)官方命令:

2)python为接口


1.opencv的安装

之前感觉太麻烦放弃了,检测图片直接保存,没用到。现在想检测视频,是避不开了,弄了我一天才安装好,之前一直make失败,后来发现opencv4.1.1不可用,又换3.4.2心累,结果配置好了,环境变量不生效,重启了傻逼电脑进不去系统,一直紫屏,呜呜,最后大神都放弃,帮我拯救了,重启了一下好了,不过进入系统会闪屏,而且垃圾箱不可用,不过能进就好,呜呜。

建议使用cmake-gui编译,容易发现问题。

1)去官网下载opencv

在本教程中选用的时opencv3.4.2,其他版本的配置方法其实差不多。 

   下载链接http://opencv.org/releases.html,选择sources版本

2)解压下载下来的zip包

unzip opencv-3.4.2.zip

 3)安装必须库和cmake-gui

sudo apt-get install cmake-gui
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev  

库不全的话,后期cmake有问题再补

4)cmake-gui编译

进入到解压后的文件包中,在解压的文件夹里新建一个文件夹build用来编译OpenCV

中间cmake编译过程,参考博客https://blog.youkuaiyun.com/jindunwan7388/article/details/80397700

 https://blog.youkuaiyun.com/u011897411/article/details/89743448

中间解决ippicv下载问题,离线下载

# 打开终端,输入
 
    gedit ~/DownLoad/opencv_source/opencv/3rdparty/ippicv/ippicv.cmake 
 
# 将47行的
 
     "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}ippicv/"
 
# 改为手动下载的文件的本地路径(也就是将网络下载的模式改为本地文件下载的模式):
 
    "file:///path" #(根据文件路径填写,注意是///)

5)make和make install

我就是make卡住了

make -j8

出现的错误:

/usr/bin/ld: warning: libiconv.so.2, needed by //home/smiles/anaconda2/lib/libgobject-2.0.so.0, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libpcre.so.1, needed by //home/smiles/anaconda2/lib/libgobject-2.0.so.0, not found (try using -rpath or -rpath-link)
//home/smiles/anaconda2/lib/libglib-2.0.so.0:对‘libiconv_open’未定义的引用
//home/smiles/anaconda2/lib/libglib-2.

### 使用YOLOv5和OpenCV实现车牌识别 #### 车牌检测与识别流程概述 为了构建一个高效的车牌识别系统,通常分为三个主要阶段:车牌检测、字符分割以及字符识别。YOLOv5作为先进的目标检测框架,在车牌检测方面表现出色[^1]。 #### 准备工作环境 安装必要的库文件来支持YOLOv5和OpenCV操作: ```bash pip install opencv-python yolov5 torch torchvision torchaudio ``` #### 数据集准备 收集足够的标注数据用于训练模型非常重要。这些数据应该包含不同光照条件下的车辆图像及其对应的边界框标签。对于车牌识别任务来说,建议至少有数千张带标记的数据样本。 #### 模型训练 利用官方提供的脚本对自定义数据集进行微调: ```python from pathlib import Path import yaml # 定义配置参数 data_yaml = { 'train': '../datasets/train/images', 'val': '../datasets/valid/images', 'nc': 1, # 类别数量 'names': ['plate'] } with open('custom_data.yaml', 'w') as file: documents = yaml.dump(data_yaml, file) !python train.py --img 640 --batch 16 --epochs 50 --data custom_data.yaml --weights yolov5s.pt ``` 此代码片段创建了一个简单的`yaml`格式配置文件,并启动了基于预训练权重(`yolov5s`)的新一轮训练过程。 #### 图像预处理 在实际应用中,输入给YOLOv5的图像是原始采集到的道路监控画面或其他形式的照片。考虑到摄像头拍摄角度变化等因素的影响,可能还需要额外的几何变换校正步骤。此外,由于自然场景下可能存在低分辨率或噪声干扰等问题,因此推荐先执行一些基本的增强措施如直方图均衡化等。 ```python import cv2 def preprocess_image(image_path): img = cv2.imread(image_path) # 应用高斯滤波去除噪音 blurred_img = cv2.GaussianBlur(img, (5, 5), 0) # 进行CLAHE对比度受限适应性直方图均衡化 lab= cv2.cvtColor(blurred_img, cv2.COLOR_BGR2LAB) l, a, b = cv2.split(lab) clahe = cv2.createCLAHE(clipLimit=3.0, tileGridSize=(8,8)) cl = clahe.apply(l) limg = cv2.merge((cl,a,b)) final_img = cv2.cvtColor(limg, cv2.COLOR_LAB2BGR) return final_img ``` 这段Python函数实现了图像读取后的初步清理工作,包括降噪和平滑亮度分布。 #### 执行推理预测 加载已训练好的YOLOv5模型并对单或多连续视频流中的每一幅静止画面对应位置做出判断: ```python import torch from PIL import ImageDraw model = torch.hub.load('ultralytics/yolov5', 'custom', path='best.pt') def detect_plates(frame): results = model([frame]) detections = [] for result in results.xyxy[0]: confidence = float(result[4].numpy()) if confidence >= 0.7: x_min, y_min, x_max, y_max = map(int, result[:4]) detection_info = { "confidence": confidence, "bbox": [x_min, y_min, x_max, y_max], "label": int(result[-1]), } detections.append(detection_info) return detections ``` 上述代码展示了如何通过PyTorch Hub接口获取本地保存的最佳模型版本,并将其应用于实时捕获的画面之中完成对象定位的任务。 #### 后处理优化 一旦获得了潜在候选区域的位置坐标,则可进一步采用OCR光学字符识别工具解析具体的牌照字符串内容;在此之前还可以考虑引入形态学运算改善ROI(感兴趣区)内的文字连贯性和清晰度以便提高最终辨识率。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值