Python pyqtgraph来自CMOS摄像头的实时数据
我正试图用python绘制从CMOS摄像头流式传输的实时数据。作为一个小提示:我想用它来稳定实验室中激光的指向。 我使用的是pyqtgraph模块中的ImageItem,我的脚本基本上是ImageItem示例的修改(见下文) 然而,当我执行脚本时,我立即得到大约3秒的延迟,RAM内存增加,直到进程被终止。相机的分辨率是3672x5496像素,非常高,似乎图片正在排队等待,直到内存耗尽(我对问题的解释) 每次更新ImageItem模块时,我都试图清除它,但它没有改变任何东西 我做错了什么?使用此分辨率,甚至可以在不耗尽内存的情况下实时运行此功能吗?我已经对每秒1-2帧感到满意了Python pyqtgraph来自CMOS摄像头的实时数据,python,memory,live,pyqtgraph,Python,Memory,Live,Pyqtgraph,我正试图用python绘制从CMOS摄像头流式传输的实时数据。作为一个小提示:我想用它来稳定实验室中激光的指向。 我使用的是pyqtgraph模块中的ImageItem,我的脚本基本上是ImageItem示例的修改(见下文) 然而,当我执行脚本时,我立即得到大约3秒的延迟,RAM内存增加,直到进程被终止。相机的分辨率是3672x5496像素,非常高,似乎图片正在排队等待,直到内存耗尽(我对问题的解释) 每次更新ImageItem模块时,我都试图清除它,但它没有改变任何东西 我做错了什么?使用此分
## Add path to library (just for examples; you do not need this)
#import initExample
from pyqtgraph.Qt import QtCore, QtGui
import numpy as np
import pyqtgraph as pg
import pyqtgraph.ptime as ptime
import gxipy as gx
import sys
## Check for connected devices
device_manager = gx.DeviceManager()
dev_num, dev_info_list = device_manager.update_device_list()
if dev_num == 0:
sys.exit(1)
## Connect to the camera
strSN = dev_info_list[0].get("sn")
cam = device_manager.open_device_by_sn(strSN)
## start the data stream
cam.stream_on()
app = QtGui.QApplication([])
## Create window with GraphicsView widget
win = pg.GraphicsLayoutWidget()
win.show() ## show widget alone in its own window
win.setWindowTitle('pyqtgraph example: ImageItem')
view = win.addViewBox()
## lock the aspect ratio so pixels are always square
view.setAspectLocked(True)
## Create image item
img = pg.ImageItem(border='w')
view.addItem(img)
## Set initial view bounds
view.setRange(QtCore.QRectF(0, 0, 3672, 5496))
## Create random image
updateTime = ptime.time()
def updateData():
global img, i, updateTime
## Get a new image from the camera
raw_image = cam.data_stream[0].get_image()
data = raw_image.get_numpy_array()
if data is None:
sys.exit(1)
## Display the image
img.setImage(data)
QtCore.QTimer.singleShot(1, updateData)
updateData()
## Start Qt event loop unless running in interactive mode.
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
cam.stream_off()
cam.close_device()