ImageVehicleRecognition按照文章链接importsysimportcv2fromPyQt5.QtGuiimport*fromPyQt5.QtWidgetsimport*fromPyQt5.QtGuiimportQIcon,QPalette,QPixmap,QBrush,QRegExpValidatorclassmainWin(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)definitUI(self):#设置窗口大小self.setFixedSize(860,600)#图标和背景self.setWindowTitle("vehicledetection")自己。setWindowIcon(QIcon("img/icon.jpg"))#Icon#Labelself.leftLab=QLabel("Originalimage:",self)self.leftLab.setGeometry(10,50,400,400)#设置绝对位置self.leftLab.setStyleSheet("background:white")self.newLab=QLabel("Newimage:",self)self.newLab.setGeometry(420,50,400,400)#设置绝对位置self.newLab.setStyleSheet("后退ground-color:white")#buttonself.openBtn=QPushButton("打开文件",self)self.openBtn.setGeometry(10,10,80,30)self.grayBtn=QPushButton("灰度处理",self)self.grayBtn.setGeometry(100,10,80,30)self.carCheckBtn=QPushButton("Videodetection",self)self.carCheckBtn.setGeometry(200,10,80,30)打开文件方法defopenFile(self):"""打开文件处理函数:返回;:return:"""print("打开图片")self.img,imgType=QFileDialog.getOpenFileName(self,"打开图片","","*.jpg;;*.png;;所有文件(*)")print(self.img)#jpg=QPixmap(self.img)self.leftLab.setPixmap(QPixmap(self.img))self.leftLab.setScaledContents(True)灰度和车辆识别方法外汇技术术语https:///www.fx61.com/definitionsdefimgGray(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)#binarization#2。loadcascadeclassifiercar_detector=cv2.CascadeClassifier("./cars.xml")"""image--图片像素数据scaleFactor=None,缩放比例minNeighbors=None,2写2是3flags=None,什么flags用来检测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))打印(汽车)#(274462828)--(x,y,w,h)#4.在汽车中绘制汽车的位置for(x,y,w,h):print(x,y,w,h)#img,pt1,pt2,color,thickness=None,lineType=None,shift=Nonecv2.rectangle(img1,(x,y),(x+w,y+h),(255,255,255),1,cv2.LINE_AA)#保存图像img_gray_name="3.png"#文件名cv2.imwrite(我mg_gray_name,img1)#保存#在控件上显示self.newLab.setPixmap(QPixmap(img_gray_name))self.newLab.setScaledContents(True)Video车辆识别视频是否开启及识别方法defcarCheck(self):print("Trafficflowdetection")#parent:QWidget=None,caption:str='',directory:str='',filter:#1.选择视频video,videoType=QFileDialog.getOpenFileName(self,"OpenVideo","","*.mp4")print(video,videoType)#video--openedvideofilename#2.读取并加载视频cap=cv2.VideoCapture(video)#3。whileTrue读取一帧图片:status,img=cap.read()ifstatus:#Grayscalegray=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))#汽车中(x,y,w,h)的相框:打印(x,y,w,h)#img,pt1,pt2,color,thickness=None,lineType=None,shift=Nonecv2.rectangle(img,(x,y),(x+w,y+h),(255,255,255),1,cv2.LINE_AA)print("实时交通流",len(cars))text='carnumber:'+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)#延迟和监听按键ifkey==27:breakelse:break#释放资源cap.release()cv2.destroyAllWindows()mainfunctionif__name__=="__main__":app=QApplication(sys.argv)#创建一个应用程序win=mainWin()#实例化对象win.show()#显示窗口sys.exit(app.exec_())
