学习python的过程中,了解到PyQt,加上先前用过OpenCV,自然就有了用PyQt设计UI界面,调用OpenCV函数实现功能的想法。

步骤:

1.  Qt designer 快速实现UI界面,并转换成 .py文件。

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'client.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGuitry:_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:def _fromUtf8(s):return stry:_encoding = QtGui.QApplication.UnicodeUTF8def _translate(context, text, disambig):return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:def _translate(context, text, disambig):return QtGui.QApplication.translate(context, text, disambig)class Ui_Dialog(object):def setupUi(self, Dialog):Dialog.setObjectName(_fromUtf8("Dialog"))Dialog.resize(683, 417)self.pushButton = QtGui.QPushButton(Dialog)self.pushButton.setGeometry(QtCore.QRect(150, 70, 81, 31))self.pushButton.setObjectName(_fromUtf8("pushButton"))self.gridLayoutWidget = QtGui.QWidget(Dialog)self.gridLayoutWidget.setGeometry(QtCore.QRect(100, 110, 181, 151))self.gridLayoutWidget.setObjectName(_fromUtf8("gridLayoutWidget"))self.gridLayout = QtGui.QGridLayout(self.gridLayoutWidget)self.gridLayout.setObjectName(_fromUtf8("gridLayout"))self.pushButton_3 = QtGui.QPushButton(self.gridLayoutWidget)self.pushButton_3.setObjectName(_fromUtf8("pushButton_3"))self.gridLayout.addWidget(self.pushButton_3, 1, 0, 1, 1)self.pushButton_2 = QtGui.QPushButton(self.gridLayoutWidget)self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))self.gridLayout.addWidget(self.pushButton_2, 0, 0, 1, 1)self.pushButton_4 = QtGui.QPushButton(self.gridLayoutWidget)self.pushButton_4.setObjectName(_fromUtf8("pushButton_4"))self.gridLayout.addWidget(self.pushButton_4, 2, 0, 1, 1)self.pushButton_5 = QtGui.QPushButton(Dialog)self.pushButton_5.setGeometry(QtCore.QRect(540, 310, 81, 31))self.pushButton_5.setObjectName(_fromUtf8("pushButton_5"))self.lcdNumber = QtGui.QLCDNumber(Dialog)self.lcdNumber.setGeometry(QtCore.QRect(40, 360, 64, 23))font = QtGui.QFont()font.setFamily(_fromUtf8("新宋体"))font.setPointSize(11)font.setBold(True)font.setWeight(75)self.lcdNumber.setFont(font)self.lcdNumber.setObjectName(_fromUtf8("lcdNumber"))self.retranslateUi(Dialog)QtCore.QObject.connect(self.pushButton_5, QtCore.SIGNAL(_fromUtf8("clicked()")), Dialog.close)QtCore.QMetaObject.connectSlotsByName(Dialog)def retranslateUi(self, Dialog):Dialog.setWindowTitle(_translate("Dialog", "Client", None))self.pushButton.setText(_translate("Dialog", "功能选择", None))self.pushButton_3.setText(_translate("Dialog", "Face Detection", None))self.pushButton_2.setText(_translate("Dialog", "Show Picture", None))self.pushButton_4.setText(_translate("Dialog", "Eye Detetction", None))self.pushButton_5.setText(_translate("Dialog", "退出", None))

2.  OpenCV实现功能。(这里以显示图片 ,人脸检测 和眼睛检测为例)

显示图片:

import cv2filename = './painting.jpg'

def showPicture():img = cv2.imread(filename)cv2.namedWindow('Show Pictures')cv2.imshow('Show Pictures', img)if cv2.waitKey() == 27 & 0xff == ord("q"):cv2.destroyAllWindows()if __name__ == '__main__':showPicture()

人脸检测:

import cv2def faceDetect():face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')camera = cv2.VideoCapture(0)while (True):ret, frame = camera.read()gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)faces = face_cascade.detectMultiScale(gray, 1.3, 5)for (x, y, w, h) in faces:cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)cv2.imshow('VideoFaceDetect', frame)k = cv2.waitKey(1)if k == ord("q"):break
    camera.release()cv2.destroyAllWindows()if __name__ == '__main__':faceDetect()

人眼检测:

import cv2def eyeDetect():eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')camera = cv2.VideoCapture(0)while (True):ret, frame = camera.read()gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)eyes = eye_cascade.detectMultiScale(gray, 1.3, 5, 0, (40, 40))for (ex, ey, ew, eh) in eyes:cv2.rectangle(frame, (ex, ey), (ex+ew, ey+eh), (0, 255, 0), 2)cv2.imshow('VideoFaceDetect', frame)k = cv2.waitKey(1)if k == ord("q"):break
    camera.release()cv2.destroyAllWindows()if __name__ == '__main__':eyeDetect()

3.  二者结合

# -*- coding: utf-8 -*-

from showpicture import *
from facedetect import *
from eyedetect import *
from client import *
import sysclass MyClient(QtGui.QDialog):def __init__(self):QtGui.QDialog.__init__(self)self.ui = Ui_Dialog()self.ui.setupUi(self)_timer = QtCore.QTimer(self)_timer.timeout.connect(self._showtime)_timer.start()self._showtime()QtCore.QObject.connect(self.ui.pushButton_2, QtCore.SIGNAL("clicked()"), self._showpicture)QtCore.QObject.connect(self.ui.pushButton_3, QtCore.SIGNAL('clicked()'), self._facedetect)QtCore.QObject.connect(self.ui.pushButton_4, QtCore.SIGNAL('clicked()'), self._eyedetect)def _showtime(self):_time = QtCore.QTime.currentTime()_text = _time.toString("hh:mm")self.ui.lcdNumber.display(_text)def _showpicture(self):showPicture()def _facedetect(self):faceDetect()def _eyedetect(self):eyeDetect()if __name__ == '__main__':app = QtGui.QApplication(sys.argv)my = MyClient()my.show()sys.exit(app.exec_())

这个project小且简单,代码也不够规范,主要是将自己的思路实现

PyQt4设计UI界面并添加简单功能【python+pyqt4+opencv】相关推荐

  1. PyQt5 图形界面-用Qt Designer来设计UI界面,并转化为python代码运行实例演示

    Qt Designer 是 Qt Creater 程序里的一个功能. PyQt5 是把 Qt Designer 设计的界面转化为 python 代码的库. 请看这篇文章: Qt Creater.PyQ ...

  2. GUI Guider设计UI界面移植到STM32

    GUI Guider设计UI界面移植到STM32 一.什么是GUI Guider 什么是 GUI-Guider? GUI Guider 是恩智浦为 LVGL 开发了一个上位机GUI 设计工具,可以通过 ...

  3. Py之wxPython:利用wxPython设计GUI界面(图片背景+简单按钮)

    Py之wxPython:利用wxPython设计GUI界面(图片背景+简单按钮) 目录 实现界面 实现代码 实现界面 实现代码 import wxclass MyPanel(wx.Panel):def ...

  4. MATLAB AppDesigner 设计UI界面中调用自定义函数

    在MATLAB AppDesigner设计UI界面过程中,如果直接在APPDesigner代码编辑框中编写代码,如代码量较大,会导致代码混乱的问题.使用调用函数的方法能够解决该问题. 本文将介绍MAT ...

  5. 优秀的设计UI界面按钮素材,让点击率飙升

    快节奏的网络数码时代人们越来越离不开智能设备,面对屏幕上无数的按钮,点还是不点是个问题.不知道大家有没有发现,按钮越多,我们点击得越慢.这是因为只要有按钮,我们的下意识就会"检查" ...

  6. android studio添加按钮界面,2.3 使用Android Studio 简单设计UI界面

    首先 创建一个新的项目找到app 文件目录下的layout的 activity_main.xml 因为Android Studio 是可视化的,所有操作都可以在图形界面进行. 该res 界面当中  d ...

  7. C++ Qt学习笔记(2)简易计算器设计(为计算器添加菜单功能)

    Qt中的主窗口为建立桌面应用程序的用户提供了一个框架,Qt中提供了QMainWindow和一些相关的类共同完成主窗口的管理.Qt中的QWidget是一个最基本的窗口控件,只有一个最基本的窗口,其余什么 ...

  8. PyQt5系列教程(二)利用QtDesigner设计UI界面

    软硬件环境 OS X EI Capitan Python 3.5.1 PyQt 5.5.1 PyCharm 5.0.1 前言 在PyQt5系列教程的第一篇http://blog.csdn.net/dj ...

  9. java设计ui界面(用户登录)

    目标: Java ui界面设计:把注册界面修改,做成登录界面 直接贴代码: package com.zp1115;import javax.swing.*; import java.awt.*;pub ...

最新文章

  1. 企业区块链应用程序的两个关键问题
  2. 波士顿动力最新仓储机器人,每小时“搬砖”800块
  3. eclipse如何设置去除全部断点的快捷键
  4. 一些基于VUE的后台框架对比
  5. 学习笔记Spark(七)—— Spark SQL应用(2)—— Spark DataFrame基础操作
  6. mysql索引_效率测试(包含测试sql脚本300万条数据),可用作教学案例。
  7. 前端学习(3032):vue+element今日头条管理-反馈
  8. linux lzo 压缩文件,Linux常用压缩和解压命令
  9. Ubuntu Vi 编辑器 命令(转)
  10. Arrays类及其方法分析
  11. 如何自学游戏引擎的开发?
  12. iPhone 12系列接连出新问题:无法收短信等信息通知
  13. 你与顶级架构师的差距,可能就在这个数据中台解决方案
  14. 中小企业数智化转型,这个百万级客户市场差点被遗忘
  15. 基于Ajax的应用程序架构汇总(一) (转自CSDN)
  16. 安装mysql输入_安装mysql
  17. DnsFookup:一款功能强大的DNS重绑定工具
  18. android.dig机器人采访,机器人学导论心得 - osc_jjc36t9p的个人空间 - OSCHINA - 中文开源技术交流社区...
  19. 数据结构与算法分析(一)
  20. 设置透明背景和转换图片格式的技巧

热门文章

  1. DC学习(时序分析和命令)
  2. 苹果CMS、海洋CMS自动定时采集-可采集任意自定义指定资源
  3. ABP VNext学习日记14
  4. VS2019调试功能学习
  5. 动态规划之DP中判断是否到达某一状态(最短时间是什么)?
  6. html制作windows 10,Windows 10迎来Alpha版HTML编辑器应用
  7. ABAP RFC远程调用
  8. 2022年起重机司机(限桥式起重机)考试试题模拟考试平台操作
  9. 《失控》摘录与读后感
  10. java libjli.so_解决setcap导致Java加载libjli.so 失败问题