跳转至

Qt + OpenCV + AI 开发图像识别工具

点击这里,边看视频讲解,边学习以下内容

本次练习要求大家使用 Python Qt + OpenCV + AI(调用云服务) , 开发一个 车牌识别软件

安装

执行如下命令即可安装 opencv python 库

pip install opencv-python

摄像头视频播放程序

我们可以使用Opencv的摄像头读取功能,开发 摄像头视频播放程序

参考代码如下

# 参考 https://docs.opencv.org/3.4/dd/d43/tutorial_py_video_display.html

import sys

from PySide2.QtWidgets import QApplication
from PySide2.QtUiTools import QUiLoader
from PySide2 import  QtCore,QtGui
import cv2

class My:

    def __init__(self):
        # 加载UI文件
        self.ui = QUiLoader().load('cvCam.ui')

        self.ui.start.clicked.connect(self.start)
        self.ui.stop.clicked.connect(self.stop)

        # 定义定时器,用于控制显示视频的帧率
        self.timer_camera = QtCore.QTimer()
        # 定时到了,回调 self.show_camera
        self.timer_camera.timeout.connect(self.show_camera)


    def start(self):

        self.cap = cv2.VideoCapture(0)

        ret, frame = self.cap.read()

        if not ret:
            print('1号摄像头不能接收数据,退出')
            sys.exit(1)

        # 若定时器未启动
        if self.timer_camera.isActive() == False:
            self.timer_camera.start(100)

    def stop(self):
        self.timer_camera.stop()  # 关闭定时器
        self.cap.release()  # 释放视频流
        self.ui.label_raw_camera.clear()  # 清空视频显示区域

    def show_camera(self):
        ret, frame = self.cap.read()  # 从视频流中读取

        # 把读到的帧的大小重新设置为 480x360
        frame = cv2.resize(frame, (480, 360))

        # 视频色彩转换回RGB,这样才是现实的颜色
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

        # 变成QImage形式
        qImage = QtGui.QImage(frame.data, frame.shape[1], frame.shape[0],
                                 QtGui.QImage.Format_RGB888)

        # 往显示视频的Label里 显示QImage
        self.ui.label_raw_camera.setPixmap(QtGui.QPixmap.fromImage(qImage))

app = QApplication([])
my = My()
my.ui.show()
app.exec_()


示例代码里面要加载一个界面ui文件,可以点击这里下载该文件