QTimer を繰り返し使用するのに問題があります
- 高さ×幅×3のnumpy配列を生成する
- numpy 配列を Qt に適したイメージに変換し、
- Qt のメイン ウィンドウに画像を表示する
(最終的に画像はランダムではなくなります。)
関連するコードは次のとおりです。
import numpy as np
from scipy.misc.pilutil import toimage
from PIL.ImageQt import ImageQt
def nparrayToQPixmap(arrayImage):
pilImage = toimage(arrayImage)
qtImage = ImageQt(pilImage)
qImage = QtGui.QImage(qtImage)
qPixmap = QtGui.QPixmap(qImage)
return qPixmap
class DetectionWidget(QtGui.QWidget):
def __init__(self):
super(DetectionWidget, self).__init__()
self.timer = QtCore.QTimer()
self.init_UI()
def init_UI(self):
self.setFixedSize(self.WIDTH, self.HEIGHT)
self.label = QtGui.QLabel(self)
self.label.resize(self.WIDTH, self.HEIGHT)
self.timer.timeout.connect(self.onTimeout)
self.timer.start(1000)
def onTimeout(self):
npImage = np.random.rand(self.HEIGHT, self.WIDTH, 3)
qPixmap = nparrayToQPixmap(npImage)
self.label.setPixmap(qPixmap)
これは最初の画像を表示しますが、Python のセグメンテーションは での 2 回目の反復で失敗しますself.label.setPixmap(qPixmap)
。また、ラベルを更新せずに を使用して画像を保存してもセグメンテーション違反がqPixmap.save(...)
発生するため、最初の反復後に結果の qPixmap が何らかの形で破損していると思われます。
どんな助けにも感謝します!