pyqt5能否用于鸿蒙系统,PyQt显示来自opencv的视频流

感谢Taimur Islam的提问。感谢eyllanesc的精彩回答,我对你的代码进行了一些修改。我使用PtQt = 4 Python = 2.7并且我没有使用opencvimport sys

import numpy as npimport flycapture2 as fc2from PyQt4.QtCore import (QThread, Qt, pyqtSignal)from PyQt4.QtGui import (QPixmap, QImage, QApplication, QWidget, QLabel)class Thread(QThread):

changePixmap = pyqtSignal(QImage)

def __init__(self, parent=None):

QThread.__init__(self, parent=parent)

self.cameraSettings()

def run(self):

while True:

im = fc2.Image()

self.c.retrieve_buffer(im)

a = np.array(im)

rawImage = QImage(a.data, a.shape[1], a.shape[0], QImage.Format_Indexed8)

self.changePixmap.emit(rawImage)

def cameraSettings(self):

print(fc2.get_library_version())

self.c = fc2.Context()

numberCam = self.c.get_num_of_cameras()

print(numberCam)

self.c.connect(*self.c.get_camera_from_index(0))

print(self.c.get_camera_info())

m, f = self.c.get_video_mode_and_frame_rate()

print(m, f)

print(self.c.get_property_info(fc2.FRAME_RATE))

p = self.c.get_property(fc2.FRAME_RATE)

print(p)

self.c.set_property(**p)

self.c.start_capture()class App(QWidget):

def __init__(self):

super(App,self).__init__()

self.title = 'PyQt4 Video'

self.left = 100

self.top = 100

self.width = 640

self.height = 480

self.initUI()

def initUI(self):

self.setWindowTitle(self.title)

self.setGeometry(self.left, self.top, self.width, self.height)

self.resize(800, 600)

# create a label

self.label = QLabel(self)

self.label.move(0, 0)

self.label.resize(640, 480)

th = Thread(self)

th.changePixmap.connect(lambda p: self.setPixMap(p))

th.start()

def setPixMap(self, p):

p = QPixmap.fromImage(p)

p = p.scaled(640, 480, Qt.KeepAspectRatio)

self.label.setPixmap(p)if __name__ == '__main__':

app = QApplication(sys.argv)

ex = App()

ex.show()

sys.exit(app.exec_())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值