资源简介
通过opencv对图像以及视频进行车辆识别:先加载图像,再把图像进行灰度化处理,再通过级联分类器xml文件,对图像进行识别,得到位置及大小,再用所得数据把车辆给框出来

代码片段和文件信息
# -*- coding: utf-8 -*-#
# PROJECT_NAME: opencv_vehicle_pro
# Name: mainWin
# Author: XQS
# Date: 2020/8/24
import sys
import cv2
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIcon QPalette QPixmap QBrush QRegExpValidator
class mainWin(QWidget):
def __init__(self):
“““
构造函数
“““
super().__init__()
self.initUI()
self.openBtn.clicked.connect(self.openFile) # 信号和槽
self.grayBtn.clicked.connect(self.imgGray) # 信号和槽
self.carCheckBtn.clicked.connect(self.carCheck)
def initUI(self):
# 设置窗口得大小
self.setFixedSize(860 600)
# 图标和背景
self.setWindowtitle(“车辆检测“)
self.setWindowIcon(QIcon(“img/icon.jpg“)) # 图标
# 标签
self.leftLab = QLabel(“原图:“ self)
self.leftLab.setGeometry(10 50 400 400) # 设置绝对位置
self.leftLab.setstyleSheet(“background:white“)
self.newLab = QLabel(“新图:“ self)
self.newLab.setGeometry(420 50 400 400) # 设置绝对位置
self.newLab.setstyleSheet(“background-color:white“)
# 按钮
self.openBtn = QPushButton(“ 打开文件“ self)
self.openBtn.setGeometry(10 10 80 30)
self.grayBtn = QPushButton(“ 灰度处理“ self)
self.grayBtn.setGeometry(100 10 80 30)
self.carCheckBtn = QPushButton(“ 视频检测“ self)
self.carCheckBtn.setGeometry(200 10 80 30)
def carCheck(self):
print(“车流检测“)
# parent: QWidget = None caption: str = ‘‘ directory: str = ‘‘ filter:
#1. 选择视频
video videoType = QFileDialog.getOpenFileName(self “打开视频“ ““ “*.mp4“)
print(video videoType)
# video --打开的视频filename
#2. 读取加载视频
cap = cv2.VideoCapture(video)
#3.读取一帧图片
while True:
statusimg = cap.read()
if status:
# 灰度
gray = cv2.cvtColor(img cv2.COLOR_RGB2GRAY)
# 2. 加载级联分类器
car_detector = cv2.CascadeClassifier(“./cars.xml“)
cars = car_detector.detectMultiScale(gray 1.2 2 cv2.CASCADE_SCALE_IMAGE (25 25) (200 200))
# 画框框
for (x y w h) in cars:
print(x y w h)
# img pt1 pt2 color thickness = None lineType = None shift = None
cv2.rectangle(img (x y) (x + w y + h) (255 255 255) 1 cv2.LINE_AA)
print(“实时车流量“ len(cars))
text = ‘car number: ‘+str(len(cars))
# 添加文字
cv2.putText(img text (350 100) cv2.FONT_HERSHEY_SIMPLEX 1.2 (255 255 0) 2)
cv2.imshow(“opencv“ img)
key = cv2.waitKey(10) # 延时并且监听按键
if key == 27:
break
else:
break
# 释放资源
cap.release()
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 10316681 2020-08-28 15:09 车辆识别项目\carMove.mp4
文件 118803 2020-08-25 17:06 车辆识别项目\cars.xm
文件 42802 2020-08-21 16:23 车辆识别项目\img\background.jpg
文件 15335 2020-08-21 16:09 车辆识别项目\img\icon.jpg
文件 51523 2020-08-26 17:02 车辆识别项目\img\vehicle.jpg
文件 27614 2020-08-26 17:08 车辆识别项目\img\vehicle2.jpg
文件 85785 2020-08-26 17:13 车辆识别项目\img\vehicle3.jpg
文件 5488 2020-08-31 12:19 车辆识别项目\vehicle_win.py
文件 2243 2020-08-25 15:30 车辆识别项目\__pycache__\mainWin.cpython-37.pyc
目录 0 2020-08-31 15:32 车辆识别项目\img
目录 0 2020-08-31 15:32 车辆识别项目\__pycache__
目录 0 2020-08-31 15:32 车辆识别项目
----------- --------- ---------- ----- ----
10666274 12
相关资源
- 基于OpenCV的数字识别468815
- 使用opencv去掉二值化图像中黑色面积
- opencv环境配置
- win10 64位下编译的opencv4.5.5库,opencv
- NVIDIAOpticalFlowSDK-79c6cee80a2df9a196f20afd6
- opencv_contrib-3.4.0.zip
- opencv2.4.9源码分析——SIFT
- 用两个摄像头实现,双目标定,双目
- opencv_traincascade训练分类器,手势识别
- opencv3.0交叉编译用parallel.cpp
- 基于opencv的图像识别识别图像中的色
- 基于openCV的识别特定颜色区域
- 基于OpenCV的分水岭算法实现
- QT+opencv+OCR 身份证号码,银行卡号识别
- opencv视频特定颜色区域识别
- 把RGB转换为HSV和HSI然后根据黄色和蓝
- opencv视觉测距
- 基于Qt和opencv的身份证号码识别系统
- opencv_ffmpeg249.dll
- SfM稀疏三维点云重建--完整工程文件
- 基于opencv的数人头程序源代码
- 利用OpenCV中的Stitcher类实现全景图像拼
- opencv实现的sift算法源码,包含了图像
- openCV 上的小波变换
- 基于OPENCV的车牌识别系统设计
- 617张国内车牌60-17bmp图片用于OpenCV正样
- hog特征提取,c版本代码
- 基于Qt5.8+OpenCV3.2的Basler多相机触发开
- 基于Opencv实现的图像纠偏
- ImageWatch2019.vsix
评论
共有 条评论