听说拍人家违章月入十万?那我用python写个自动检测车辆是否违章不是发财了。。。

听说拍人家违章月入十万?那我写了个自动检测车辆是否违章不发财了?

导语​

SO 由于对考试,车辆有了执着,所以学习以及今天教大家的也是关于基于opencv的车辆检测系统!!!

正文

想想看,如果你能在红绿灯摄像头中集成车辆检测系统,你可以轻松地同时跟踪许多有用的东西:

  • 白天交通路口有多少辆车?
  • 什么时候交通堵塞?
  • 什么样的车辆(重型车辆、汽车等)正在通过交叉路口?
  • 有没有办法优化交通,并通过不同的街道进行分配?
  • 还有很多例子就不一一列举。应用程序是无止境的~

首先环境安装:

我们先导入所需的库和模块—— opencv安装:pip install opencv-python

import os
import re
import cv2 # opencv library
import numpy as np
from os.path import isfile, join
import matplotlib.pyplot as plt

将框架保存在工作目录中的文件夹以及导入帧并保存:

# get file names of the frames
col_frames = os.listdir('frames/')
 
# sort file names
col_frames.sort(key=lambda f: int(re.sub('\D', '', f)))
 
# empty list to store the frames
col_images=[]
 
for i in col_frames:
    # read the frames
    img = cv2.imread('frames/'+i)
    # append the frames to the list
    col_images.append(img)
让我们显示两个连续的帧:

# plot 13th frame
i = 13
 
for frame in [i, i+1]:
    plt.imshow(cv2.cvtColor(col_images[frame], cv2.COLOR_BGR2RGB))
    plt.title("frame: "+str(frame))
    plt.show()


获取两个连续帧的像素值的差值将有助于我们观察移动目标。那么,让我们在上面两个帧上使用该技术:

# convert the frames to grayscale
grayA = cv2.cvtColor(col_images[i], cv2.COLOR_BGR2GRAY)
grayB = cv2.cvtColor(col_images[i+1], cv2.COLOR_BGR2GRAY)
 
# plot the image after frame differencing
plt.imshow(cv2.absdiff(grayB, grayA), cmap = 'gray')
plt.show()

现在我们可以清楚地看到第13帧和第14帧中的移动目标。其他没有移动的东西都被减去了。

图像预处理——为所有帧中的所有移动车辆添加了轮廓:

# specify video name
pathOut = 'vehicle_detection_v3.mp4'
 
# specify frames per second
fps = 14.0
接下来阅读列表中的最后一帧:

frame_array = []
files = [f for f in os.listdir(pathIn) if isfile(join(pathIn, f))]
files.sort(key=lambda f: int(re.sub('\D', '', f)))
 
for i in range(len(files)):
    filename=pathIn + files[i]
 
    #read frames
    img = cv2.imread(filename)
    height, width, layers = img.shape
    size = (width,height)
 
    #inserting the frames into an image array
    frame_array.append(img)

最后使用以下代码制作目标检测视频:

out = cv2.VideoWriter(pathOut,cv2.VideoWriter_fourcc(*'DIVX'), fps, size)
 
for i in range(len(frame_array)):
    # writing to a image array
    out.write(frame_array[i])
 
out.release()

好啦!你学会了嘛?

总结

祈祷下次科二考试一定过!一定过!一定过!!

如果看到这里,说明你喜欢这篇文章,记得三连哦~爱你。

 Python经验分享

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

Python学习路线

这里把Python常用的技术点做了整理,有各个领域的知识点汇总,可以按照上面的知识点找对应的学习资源。
在这里插入图片描述

学习软件

Python常用的开发软件,会给大家节省很多时间。
在这里插入图片描述

学习视频

编程学习一定要多多看视频,书籍和视频结合起来学习才能事半功倍。
在这里插入图片描述

100道练习题

在这里插入图片描述

实战案例

光学理论是没用的,学习编程切忌纸上谈兵,一定要动手实操,将自己学到的知识运用到实际当中。
在这里插入图片描述
最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值