Ⅰ python如何能采集多个摄像头的数据
可以,用PYQT+CV2,四个USB连接成功,程序如下,UI要自己搞了,放不下
# -*- coding: utf-8 -*-
import sys#, time
from PyQt5 import QtWidgets
from PyQt5.QtCore import QTimer, QThread, pyqtSignal
from Ui_cv2ui_thread import Ui_MainWindow
import cv2 as cv
from PyQt5.QtGui import QImage, QPixmap
from PyQt5.QtWidgets import (QApplication, QDialog, QFileDialog, QGridLayout,
QLabel, QPushButton, QColorDialog)
import numpy as np
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent=parent)
self.setupUi(self) #这个一定要在这个最前面位置
# define the slot for pushbutton to save the merged image
self.pushButton.clicked.connect(self.savemergeimage)
self.img = np.ndarray(()) #空的numpy array
self.img1 = np.ndarray(())
self.img2= np.ndarray(())
self.img3= np.ndarray(())
self.img4= np.ndarray(())
self.img4= np.empty([960,1280, 3], int)
self.cap = cv.VideoCapture(3) #注意,由大开到小,很重要
self.cap.set(3, 640) # setup the resolution of CCD
self.cap.set(4, 480)
ret, self.img=self.cap.read()
self.cap1 = cv.VideoCapture(2)
self.cap1.set(3, 640)
self.cap1.set(4, 480)
ret, self.img1=self.cap1.read()
self.cap2 = cv.VideoCapture(1)
self.cap2.set(3, 640)
self.cap2.set(4, 480)
ret, self.img2=self.cap2.read()
self.cap3 = cv.VideoCapture(0)
self.cap3.set(3, 640)
self.cap3.set(4, 480)
ret, self.img3=self.cap3.read()
#time.sleep(1)也许需要延迟,等他准备好
# 初始化一个定时器,在其他条件下用的
#self.timer = QTimer(self)
# 实例化一个线程
self.work0= WorkThread()
self.work0.trigger.connect(self.ccd2)
# 定义时间任务是一次性任务就设定下一行
#self.timer.setSingleShot(True)
# 启动时间任务,注意一致性
self.work0.start()
# 实例化一个线程
self.work= WorkThread()
# 多线程的信号触发连接到ccd3
self.work.trigger.connect(self.ccd3)
self.work.start()
# 实例化一个线程
self.work2 = WorkThread()
# 多线程的信号触发连接到ccd4
self.work2.trigger.connect(self.ccd4)
self.work2.start()
# 实例化一个线程
self.work3 = WorkThread()
# 多线程的信号触发连接到ccd1
self.work3.trigger.connect(self.ccdmerge)
self.work3.start()
self.work4 = WorkThread()
# 多线程的信号触发连接到ccd1
self.work4.trigger.connect(self.ccd1)
self.work4.start()
def refreshShowa(self):#显示ccd1到label1
# 提取图像的尺寸和通道, 用于将opencv下的image转换成Qimage
height, width, channel = self.img.shape
bytesPerLine = 3 * width
self.qImg = QImage(self.img.data, width, height, bytesPerLine,
QImage.Format_RGB888).rgbSwapped()
# 将Qimage显示出来
self.label.setPixmap(QPixmap.fromImage(self.qImg))
def refreshShowb(self):#显示ccd2到label2
# 提取图像的尺寸和通道, 用于将opencv下的image转换成Qimage
height, width, channel = self.img1.shape
bytesPerLine = 3 * width
self.qImg1 = QImage(self.img1.data, width, height, bytesPerLine,
QImage.Format_RGB888).rgbSwapped()
# 将Qimage显示出来
self.label_2.setPixmap(QPixmap.fromImage( self.qImg1))
def refreshShowc(self):#显示ccd3到label3
# 提取图像的尺寸和通道, 用于将opencv下的image转换成Qimage
height, width, channel = self.img2.shape
bytesPerLine = 3 * width
self.qImg2 = QImage(self.img2.data, width, height, bytesPerLine,
QImage.Format_RGB888).rgbSwapped()
# 将Qimage显示出来
self.label_3.setPixmap(QPixmap.fromImage( self.qImg2))
def refreshShowd(self):#显示ccd4到label4
# 提取图像的尺寸和通道, 用于将opencv下的image转换成Qimage
height, width, channel = self.img3.shape
bytesPerLine = 3 * width
self.qImg3 = QImage(self.img3.data, width, height, bytesPerLine,
QImage.Format_RGB888).rgbSwapped()
# 将Qimage显示出来
self.label_4.setPixmap(QPixmap.fromImage( self.qImg3))
def refreshShowe(self):#显示合并的影像到label6
# 提取图像的尺寸和通道, 用于将opencv下的image转换成Qimage
height, width, channel = self.img4.shape
bytesPerLine = 3 * width
self.qImg4 = QImage(self.img4.data, width, height, bytesPerLine,
QImage.Format_RGB888).rgbSwapped()
# 将Qimage显示出来
self.label_6.setPixmap(QPixmap.fromImage( self.qImg4))
def ccd1(self):
self.cap.set(3, 640)
self.cap.set(4, 480)
ret, self.img = self.cap.read()
self.refreshShowa()
# 启动另一个线程
self.work0.start()#注意一致性
def ccd2(self, str):
self.cap1.set(3, 640)
self.cap1.set(4, 480)
ret, self.img1 = self.cap1.read()
self.refreshShowb()
self.work.start()#注意一致性
def ccd3(self, str):
self.cap2.set(3, 640)
self.cap2.set(4, 480)
ret, self.img2= self.cap2.read()
self.refreshShowc()
self.work2.start()#注意一致性
def ccd4(self, str):
self.cap3.set(3, 640)
self.cap3.set(4, 480)
ret, self.img3 = self.cap3.read()
self.refreshShowd()
self.work3.start()#注意一致性
def ccdmerge(self, str):
self.img4=np.hstack((self.img, self.img1))
self.img4=np.vstack((self.img4, np.hstack((self.img2, self.img3))))
#print ('here is a merge process') 可以用来判断多线程的执行
self.refreshShowe() #later to remove the remark
self.work4.start()#注意一致性
def savemergeimage(self):
# 调用存储文件dialog
fileName, tmp = QFileDialog.getSaveFileName(
self, 'Save Image', './__data', '*.png *.jpg *.bmp', '*.png')
if fileName == '':
return
if self.img.size == 1:
return
# 调用opencv写入图像
cv.imwrite(fileName,self.img4)
class WorkThread(QThread): #多线程核心,非常重要
# 定义一个信号
trigger = pyqtSignal(str)
def __int__(self):
# 初始化函数,默认
super(WorkThread, self).__init__()
def run(self):
self.trigger.emit('')
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
Ⅱ 请问为什么dsp2812捕获中断加入两句读(EvaRegs.CAP1FIFO)程序后,要捕获两次才能进中断
DSP捕获中断产生需要FIFO中至少有一个有效值(CAPxFIFO标志寄存器中的相应位显示不等于0)且中断未被屏蔽。在中断程序里读取了2次数据,(cap_previous1 = EvaRegs.CAP1FIFO;cap_current1 = EvaRegs.CAP1FIFO;)使DSP的FIFO堆栈的顶层寄存器没有有效值,因此每隔一次捕获才会产生一次中断。
若将(cap_previous1 = EvaRegs.CAP1FIFO;cap_current1 = EvaRegs.CAP1FIFO;)中去掉一次读取数据则每次捕获都会产生中断。
具体请看《TMS320X281X DSP原理及C程序开发》一书的P177具体解释。
Ⅲ 空调电机有CAP,CAP1,X2,X3,X4,X5,双色线,两条灰线,怎样分成零线,火线,地线接
看电机上面电路图接线
Ⅳ 电气施工中CAP1一160A/4P是什么意思
是常熟CAP1系列自动转换开关,160A是额定电流,4P是4级的意思
Ⅳ 求华硕z170-K BIOS文件帮忙cap格式转换bin 格式的版本要1803
1、下载解压后要更改文件名
2、下载个人主板对应的bios,解压后放在c盘根目录。
3、重启电脑后按下F4(asus刷bios快捷键)。
4、选择bios文件开始刷,刷完后自动关机。
5、注意:升级过程中,不能断电。不要用winflash在系统内刷bios,容易出问题且不好解决。
Ⅵ 请问下常熟双电源转换开关CAP1的辅助接线端子F11.F12.F14有什么作用,是否需要接线
好像没有你说的接线端子吧。
Ⅶ 2812控制无刷直流电机的捕获中断的一点疑惑
三个捕获中断用的是同一个中断函数。
Ⅷ 双电源切换开关故障问题
双电源开关带机械和电气互锁,不会出现你说的反送电。
常熟开关制造有限公司出的双电源转换开关,有几种型号:
ca1、ca1b系列自动转换开关;
cap1系列自动转换开关;
cap2系列自动转换开关
刚用过他们厂里的双电源开关,质量还可以。
你可以网络一下(有假冒的网站,注意了,呵呵!电话区号是0512就不会错)
型号要看你的用途、电流等。
要消防验收的话,最好找有消防认证的双电源开关,不然消防验收通不过!
Ⅸ DSP试编制程序,用捕获单元1(cap1)测量一个窄负脉冲的宽度。假设CLKIN=6MHz。 要求1.只写编程思路2.画图
信息工程的?
Ⅹ CAP1-63/ER/4是什么电器的型号,而且是什么意思
自动转换开关 CA1-250 CA1-400 CA1-630 CA1-800 CAP1-32 CAP1-63 CAP1-100 CAP1-125 CAP1-140 CAP1-160 CAP1-200 CAP1-225 CAP1-250 CAP1-315 CAP1-350 CAP1-400 JR,JS (经济型)自动转换开关自动控制器 ER, ES, EF (电子型) ZR, ZS, ZF (智能型) ZTR, ZTS, ZTF (通讯型)