久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

  • <tfoot id='xROUO'></tfoot>
  • <legend id='xROUO'><style id='xROUO'><dir id='xROUO'><q id='xROUO'></q></dir></style></legend>

    <small id='xROUO'></small><noframes id='xROUO'>

      <bdo id='xROUO'></bdo><ul id='xROUO'></ul>
    <i id='xROUO'><tr id='xROUO'><dt id='xROUO'><q id='xROUO'><span id='xROUO'><b id='xROUO'><form id='xROUO'><ins id='xROUO'></ins><ul id='xROUO'></ul><sub id='xROUO'></sub></form><legend id='xROUO'></legend><bdo id='xROUO'><pre id='xROUO'><center id='xROUO'></center></pre></bdo></b><th id='xROUO'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='xROUO'><tfoot id='xROUO'></tfoot><dl id='xROUO'><fieldset id='xROUO'></fieldset></dl></div>

        在 QGraphicsView 中播放圖像序列(神秘的內存泄漏

        Playing image sequence in QGraphicsView (Mysterious Memory Leak)(在 QGraphicsView 中播放圖像序列(神秘的內存泄漏))
        <tfoot id='8vkmh'></tfoot>
        <i id='8vkmh'><tr id='8vkmh'><dt id='8vkmh'><q id='8vkmh'><span id='8vkmh'><b id='8vkmh'><form id='8vkmh'><ins id='8vkmh'></ins><ul id='8vkmh'></ul><sub id='8vkmh'></sub></form><legend id='8vkmh'></legend><bdo id='8vkmh'><pre id='8vkmh'><center id='8vkmh'></center></pre></bdo></b><th id='8vkmh'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='8vkmh'><tfoot id='8vkmh'></tfoot><dl id='8vkmh'><fieldset id='8vkmh'></fieldset></dl></div>

        • <small id='8vkmh'></small><noframes id='8vkmh'>

            <tbody id='8vkmh'></tbody>
                  <bdo id='8vkmh'></bdo><ul id='8vkmh'></ul>
                  <legend id='8vkmh'><style id='8vkmh'><dir id='8vkmh'><q id='8vkmh'></q></dir></style></legend>
                  本文介紹了在 QGraphicsView 中播放圖像序列(神秘的內存泄漏)的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  我正在嘗試使用 OpenCV 和 PyQt5 處理圖像序列并制作結果視頻.我有一些代碼循環遍歷目錄、讀取圖像并嘗試QGraphicsView上顯示它們.

                  I'm trying to process an image sequence and make a video of the results using OpenCV and PyQt5. I've got some code that loops through a directory, reads in the images, and tries to display them on a QGraphicsView.

                  def on_start(self):
                      for f in self.image_list:
                          img = cv2.imread(f)
                          img = cv2qimage(img, False)
                          self.scene.set_qimage(img)
                  

                  self.scene 繼承自 QGraphicsScene.

                    def set_qimage(self, qimage):
                          self.pixmap = QPixmap.fromImage(qimage)
                          self.addPixmap(self.pixmap)
                  

                  問題是每次我調用 addPixmap() 時,圖像都會添加到所有其他圖像之上,很快我就會耗盡內存,一切都崩潰了.當前代碼不包含任何處理步驟,它只是將 numpy ndarry 轉換為 QImage 并將 QPixmap 添加到場景中.

                  The problem is everytime I call addPixmap() the image is just added on top of all the other images and soon I run out of memory and everything crashes. The current code doesn't include any of the processing steps, it just converts the numpy ndarry to a QImage and adds the QPixmap to the scene.

                  更新 QGraphicsScene 以便我可以流式傳輸一系列圖像的正確方法是什么?

                  推薦答案

                  每次使用 addPixmap() 時,您都會創建一個新的 QGraphicsPixmapItem,從而不必要地添加內存.解決方案是創建一個 QGraphicsPixmapItem 并重用它.另外處理任務會阻塞主線程,所以必須使用線程來完成繁重的任務,并通過信號發送QImage.

                  Every time you use addPixmap() you are creating a new QGraphicsPixmapItem adding memory unnecessarily. The solution is to create a QGraphicsPixmapItem and reuse it. In addition the processing task can block the main thread so you must use a thread to do the heavy task and send the QImage through signals.

                  class ProcessWorker(QObject):
                      imageChanged = pyqtSignal(QImage)
                  
                      def doWork(self):
                          for f in self.image_list:
                              img = cv2.imread(f)
                              img = cv2qimage(img, False)
                              self.imageChanged.emit(img)
                              QThread.msleep(1)
                  
                  class Widget(QWidget):
                      def __init__(self, parent=None):
                          QWidget.__init__(self, parent)
                          lay = QVBoxLayout(self)
                          gv = QGraphicsView()
                          lay.addWidget(gv)
                          scene = QGraphicsScene(self)
                          gv.setScene(scene)
                          self.pixmap_item = QGraphicsPixmapItem()
                          scene.addItem(self.pixmap_item)
                  
                          self.workerThread = QThread()
                          self.worker = ProcessWorker()
                          self.worker.moveToThread(self.workerThread)
                          self.workerThread.finished.connect(self.worker.deleteLater)
                          self.workerThread.started.connect(self.worker.doWork)
                          self.worker.imageChanged.connect(self.setImage)
                          self.workerThread.start()
                  
                  
                      @pyqtSlot(QImage)
                      def setImage(self, image):
                          pixmap = QPixmap.fromImage(image)
                          self.pixmap_item.setPixmap(pixmap)
                  
                  
                  if __name__ == '__main__':
                      app = QApplication(sys.argv)
                      w = Widget()
                      w.show()
                      sys.exit(app.exec_())
                  

                  這篇關于在 QGraphicsView 中播放圖像序列(神秘的內存泄漏)的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                  【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                  相關文檔推薦

                  How to bind a function to an Action from Qt menubar?(如何將函數綁定到 Qt 菜單欄中的操作?)
                  PyQt progress jumps to 100% after it starts(PyQt 啟動后進度躍升至 100%)
                  How to set yaxis tick label in a fixed position so that when i scroll left or right the yaxis tick label should be visible?(如何將 yaxis 刻度標簽設置在固定位置,以便當我向左或向右滾動時,yaxis 刻度標簽應該可見
                  `QImage` constructor has unknown keyword `data`(`QImage` 構造函數有未知關鍵字 `data`)
                  Change x-axis ticks to custom strings(將 x 軸刻度更改為自定義字符串)
                  How to show progress bar while saving file to excel in python?(如何在python中將文件保存為excel時顯示進度條?)
                    <legend id='a2OAW'><style id='a2OAW'><dir id='a2OAW'><q id='a2OAW'></q></dir></style></legend>
                  • <small id='a2OAW'></small><noframes id='a2OAW'>

                  • <tfoot id='a2OAW'></tfoot>
                  • <i id='a2OAW'><tr id='a2OAW'><dt id='a2OAW'><q id='a2OAW'><span id='a2OAW'><b id='a2OAW'><form id='a2OAW'><ins id='a2OAW'></ins><ul id='a2OAW'></ul><sub id='a2OAW'></sub></form><legend id='a2OAW'></legend><bdo id='a2OAW'><pre id='a2OAW'><center id='a2OAW'></center></pre></bdo></b><th id='a2OAW'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='a2OAW'><tfoot id='a2OAW'></tfoot><dl id='a2OAW'><fieldset id='a2OAW'></fieldset></dl></div>
                      <bdo id='a2OAW'></bdo><ul id='a2OAW'></ul>
                        <tbody id='a2OAW'></tbody>

                          • 主站蜘蛛池模板: 国产精品精品视频一区二区三区 | 国产一区二区三区在线看 | 久久久久久国产精品免费免费 | 亚洲精品一区二区在线观看 | 亚洲第一av | 黄色片a级 | 北条麻妃国产九九九精品小说 | 成人1区2区| 一级毛片视频在线观看 | 成人视屏在线观看 | 五月综合激情婷婷 | 中文字幕二区 | 精品一区久久 | 天天天操操操 | 久草色播 | 在线视频成人 | 亚洲精品一区二区 | 国精日本亚洲欧州国产中文久久 | av片免费 | 久久久久久久久久久高潮一区二区 | 91精品国产91综合久久蜜臀 | 91豆花视频 | 高清成人av| www国产精品 | 久久精品视频9 | 国产一区二区欧美 | 国产成人精品网站 | 成人不卡在线 | 毛片网站在线观看视频 | 亚洲成人免费在线观看 | 成人动漫一区二区 | 亚洲视频在线看 | 日韩欧美一区二区三区四区 | 全免费a级毛片免费看视频免费下 | 黄色毛片在线播放 | 国产激情视频在线 | 99久久精品免费看国产小宝寻花 | 久草精品视频 | 一区二区在线 | 91精品国产色综合久久不卡98 | 看a网站 |