python车辆识别硬件_Opencv python之车辆识别项目

图片车辆识别

根据文章搭建好环境后开始进行做项目linkimport 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 openFile(self):

"""

打开文件的处理函数

:return;

:return:

"""

print("打开图片")

self.img,imgType = QFileDialog.getOpenFileName(self, "打开图片", "", "*.jpg;;*.png;;ALL FILES(*)")

print(self.img)

#jpg = QPixmap(self.img)

self.leftLab.setPixmap(QPixmap(self.img))

self.leftLab.setScaledContents(True)def imgGray(self):

print("灰度")

img1 = cv2.imread(self.img)

#1. 灰度化处理

img_gray = cv2.cvtColor(img1, cv2.COLOR_RGB2GRAY)

# BGR = cv2.cvtColor(module,cv2.COLOR_BGR2RGB)# 转化为RGB格式

# ret,thresh = cv2.threshold(gray, 200, 255, cv2.THRESH_BINARY)#二值化

#2. 加载级联分类器

car_detector = cv2.CascadeClassifier("./cars.xml")

"""

image--图片像素数据

scaleFactor=None,缩放比例

minNeighbors=None,2 写2就是3

flags =None, 标志位 用什么来进行检测

minSize=None,最小的尺寸

maxSize=None,最大的尺寸

self, image, scaleFactor=None, minNeighbors=None, flags=None, minSize=None, maxSize=None

"""

#3. 检测车辆 多尺度检测,得到车辆的坐标定位

cars = car_detector.detectMultiScale(img_gray, 1.05, 2, cv2.CASCADE_SCALE_IMAGE, (20,20), (100,100))

print(cars)

#(274 46 28 28) --(x,y,w,h)

#4. 在车的定位上画图

for(x, y, w, h) in cars:

print(x, y, w, h)

#img, pt1, pt2, color, thickness = None, lineType = None, shift = None

cv2.rectangle(img1,(x,y), (x+w, y+h), (255, 255, 255), 1, cv2.LINE_AA)

# 保存图片

img_gray_name = "3.png" # 文件名

cv2.imwrite(img_gray_name, img1) # 保存

# 显示再控件上面

self.newLab.setPixmap(QPixmap(img_gray_name))

self.newLab.setScaledContents(True)

视频车辆识别

视频打开且识别方法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:

status,img = 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()

cv2.destroyAllWindows()

主函数if __name__ == "__main__":

app = QApplication(sys.argv) #创建一个应用程序

win = mainWin() #实例化对象

win.show() #显示窗口

sys.exit(app.exec_())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311512.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[蓝桥杯2016决赛]反幻方-next_permutation枚举

题目描述 我国古籍很早就记载着 2 9 4 7 5 3 6 1 8 这是一个三阶幻方。每行每列以及对角线上的数字相加都相等。 下面考虑一个相反的问题。 可不可以用 1~9 的数字填入九宫格,使得:每行每列每个对角线上的数字和都互不相等呢? 这应该能做到。…

堆初始化-二叉堆一般用数组来表示。例如,根节点在数组中的位置是0,第n个位置的子节点分别在2n+1和 2n+2-icoding-void init_min_heap(PMinHeap pq, int

堆初始化 二叉堆一般用数组来表示。例如,根节点在数组中的位置是0,第n个位置的子节点分别在2n1和 2n2。 因此,第0个位置的子节点在1和2,1的子节点在3和4。以此类推。这种存储方式便于寻找父节点和子节点。 在二叉堆上可以进行插入…

管理学定律--墨菲定律

如果有两种或两种以上的方式去做某件事情,而其中一种选择方式将导致灾难,则必定有人会做出这种选择。根本内容是:如果事情有变坏的可能,不管这种可能性有多小,它总会发生。一、墨菲定律来源1949年,一位名叫…

毕滢python小咖养成计划百度云_学技树-Python小咖养成计划

1.计算机操作基础.mp42.Python下载与配置.mp43.变量的概念.mp44.函数的调用和定义.mp45.数据的类型.mp46.字符串.mp47.if条件判断.mp48.while循环.mp49.for循环.mp410.列表.mp411.字典.mp412.类的概念.mp413.类的使用.mp4代码管理及答疑系统.pdf①项目一:数据分析(已…

[蓝桥杯2016决赛]平方末尾-数论,枚举

题目描述 能够表示为某个整数的平方的数字称为“平方数”。比如,25,64 虽然无法立即说出某个数是平方数,但经常可以断定某个数不是平方数。 因为平方数的末位只可能是:[0, 1, 4, 5, 6, 9] 这6个数字中的某个。 所以,4325435332必然…

数据结构-排序-分配类排序-知识点总结归纳3

分配类排序:核心是分配和收集,利用关键字的优先级进行排序的思想 高位优先排序:比如桥牌,先比较花色在比较面值;比如学号,比较级,院,班,号; 低位优先排序: 链式基数排序 思想:基于"分配"和"收集"的操作, 将单关键字转化为多关键字排序 将链表作为存储结…

Magicodes.IE基础教程之导出Pdf

说明本教程主要说明如何使用Magicodes.IE.Pdf完成Pdf收据导出要点导出PDF数据自定义PDF模板导出单据如何批量导出单据导出特性说明PdfExporterAttributePdfExporterAttribute特性用于设置Pdf导出的总体设置,比如方向、纸张等。主要包含如下设置:Name:文档…

mysql查询语句能否让一个字段不显示出来_天天写order by,你知道Mysql底层如何执行吗?

作者:不才陈某前言在实际的开发中一定会碰到根据某个字段进行排序后来显示结果的需求,但是你真的理解order by在 Mysql 底层是如何执行的吗?假设你要查询城市是苏州的所有人名字,并且按照姓名进行排序返回前 1000 个人的姓名、年龄…

排序-总结

排序 排序:重点在于对于记录的关键字进行排序,得到按关键字有序记录序列 分为: A.内部排序: 排序过程在内存中进行 B.外部排序: 待排序记录数据量过大,需要借助外部存储设备 排序的稳定性:排序后有相同关键字的记录顺序不变就是稳定的排序 插入类排序: 1.直接插入排…

.NET Core开发实战(第10课:环境变量配置提供程序)--学习笔记

10 | 环境变量配置提供程序:容器环境下配置注入的最佳途径环境变量的配置提供程序主要适应场景:1、在 Docker 中运行时2、在 Kubernetes 中运行时3、需要设置 ASP.NET Core 的一些内置特殊配置时环境变量和命令行这两个提供程序在早期是没有容器化的&…

python和qt哪个好_做个小的桌面用node还是QT比较好? - Web开发 - WebDev - 水木社区...

楼主说了自己水平不高,那就专注 py 一门语言就好了。electron 这边虽然现在已经简单了很多,但也是两个进程起步,main 和 renderer 进程的 api 又不一样,renderer 只有 node api 的子集。你大概觉得不挺简单的么,但对于…

堆元素插入 二叉堆一般用数组来表示。typedef struct _otherInfo{ int i; int j;}OtherInfo;-icoding-C-数据结构

堆元素插入 二叉堆一般用数组来表示。例如,根节点在数组中的位置是0,第n个位置的子节点分别在2n1和 2n2。 因此,第0个位置的子节点在1和2,1的子节点在3和4。以此类推。这种存储方式便于寻找父节点和子节点。 在二叉堆上可以进行插…

dotnetcore3.1 WPF 实现多语言

dotnetcore3.1 WPF 实现多语言Intro最近把 DbTool 从 WinForm 迁移到了 WPF,并更新到了 dotnet core 3.1,并实现了基于 Microsoft.Extensions.Localization 实现了基本的多语言支持。下面来分享一下如何来实现服务注册如果不熟悉如何在 WPF 中使用依赖注…

卸载chrome_Chrome 浏览器必备“扩展管理工具”,一键管理 Chrome 扩展

前言丰富的扩展插件可以说是 Chrome 浏览器的灵魂了,但是扩展安装的多了,难免会引起卡顿,而且每次打开/关闭扩展都要进入扩展程序页面,切换起来很不方便。下面分享的三款 Chrome 扩展管理工具,可以让我们更便捷地管理 …

堆化 二叉堆一般用数组来表示。typedef struct _minHeapNodetypedef struct _otherInfo-icoding-C-数据结构

堆化 二叉堆一般用数组来表示。例如,根节点在数组中的位置是0,第n个位置的子节点分别在2n1和 2n2。 因此,第0个位置的子节点在1和2,1的子节点在3和4。以此类推。这种存储方式便于寻找父节点和子节点。 在二叉堆上可以进行插入节点…

POJ 3984 迷宫问题

定义一个二维数组: int maze[5][5] { 0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,}; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要…

面试官:你连HTTP请求Post和Get都不了解?

IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。此话一出,不知激起了多少(码农)程序员的愤怒…

python升级pip在哪儿打开_Linux下升级python和安装pip的详解

Linux版本升级:1、首先确认Linux操作系统中自带的python 版本时候与自己所需要的版本一致3、解压tar -zxvf Python-2.7.11.tgz进入Python-2.7.11目录 输入./configuremakemake install4、此时查看python版本还是系统默认的版本执行:mv /usr/bin/python …