IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> ubuntu-pyqt5-opencv -> 正文阅读

[人工智能]ubuntu-pyqt5-opencv

本篇代码在ubuntu环境下,结束线程不会使图像界面崩溃。上篇代码在ubuntu环境运行时报错,windows下运行正常。

import cv2
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QGridLayout, QPushButton
from PyQt5.QtCore import QThread, pyqtSignal, Qt
from PyQt5.QtGui import QImage, QPixmap

class MyWindow(QWidget):
    def __init__(self):
        super(MyWindow, self).__init__()

        self.openCameraText = 'open camera'
        self.closeCameraText = 'close camera'



        self.initUI()

    def initUI(self):
        self.resize(600, 600)

        self.imageLabel = QLabel()
        self.cameraBtn = QPushButton(self.openCameraText)
        self.cameraBtn.clicked.connect(self.cameraBtnCliked)

        layout = QGridLayout()
        layout.addWidget(self.imageLabel, 0, 0 , Qt.AlignCenter)
        layout.addWidget(self.cameraBtn)

        self.setLayout(layout)

        self.show()



    def cameraBtnCliked(self):
        if self.cameraBtn.text() == self.openCameraText:
            self.thread_capture = ThreadCapture(0)
            self.thread_capture.signal_image.connect(self.showImage)
            self.thread_capture.start()

            self.cameraBtn.setText(self.closeCameraText)

        else:
            self.thread_capture.cameraFlag = False
            self.thread_capture.quit()


            self.cameraBtn.setText(self.openCameraText)

    def showImage(self, image):
        self.imageLabel.setPixmap(image)

class ThreadCapture(QThread):
    signal_image = pyqtSignal(QPixmap)
    def __init__(self, camerNum):
        super(ThreadCapture, self).__init__()
        self.camerNum = camerNum
        self.cameraFlag = True


    def run(self):
        self.cap = cv2.VideoCapture(self.camerNum)
        while self.cameraFlag:
            print('Thread ID:', QThread.currentThreadId())
            ret, image = self.cap.read()
            image = cv2.resize(image, (500, 500))

            if ret:
                image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

                qimage = QImage(image.data, image.shape[1], image.shape[0], QImage.Format_RGB888)

                qpixmap = QPixmap.fromImage(qimage)

                self.signal_image.emit(qpixmap)
        else:
            self.cap.release()



if __name__ == '__main__':
    app = QApplication(sys.argv)

    w = MyWindow()

    sys.exit(app.exec_())
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-09 11:45:02  更:2021-09-09 11:45:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 15:47:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码