2013-03-26 98 views
0

我试图将simplecv和pyqt4整合在一起,并取得了一些成功。我可以通过simplecv在pyqt4中看到捕捉到的摄像头,我可以用simplecv修改图像,并且在pyqt4中显示确定,但是当我尝试向图像添加几何图形或文本时,它不会在pyqt4中显示。如果我自己运行simpleCV代码,它可以正常工作。有人能帮我理解为什么它不起作用吗?顺便说一下,正如你所看到的,我是pyqt4和simpleCV的新手。查看我目前拥有的代码。用simplecv和pyqt4画线条

#!/usr/bin/env python 
import os 
import sys 
import signal 
from PyQt4 import uic, QtGui, QtCore 

from webcamGUI3 import * 
from SimpleCV import * 

class Webcam(QtGui.QMainWindow): 
    def __init__(self, parent=None): 

     QtGui.QWidget.__init__(self,parent)   
     self.MainWindow = Ui_MainWindow() 
     self.MainWindow.setupUi(self) 
     self.webcam = Camera(0,{ "width": 640, "height": 480 }) 

     self.timer = QtCore.QTimer() 

     self.connect(self.timer, QtCore.SIGNAL('timeout()'), self.show_frame) 

     self.timer.start(1); 

    def show_frame(self): 
     ipl_image = self.webcam.getImage() 
     ipl_image.dl().circle((150, 75), 50, Color.RED, filled = True) 
     data = ipl_image.getBitmap().tostring() 
     image = QtGui.QImage(data, ipl_image.width, ipl_image.height, 3 * ipl_image.width, QtGui.QImage.Format_RGB888) 
     pixmap = QtGui.QPixmap() 
     pixmap.convertFromImage(image.rgbSwapped()) 
     self.MainWindow.lblWebcam.setPixmap(pixmap) 

if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv) 
    webcam = Webcam() 
    webcam.show() 
    app.exec_() 

任何想法?

回答

0

我有我的朋友,是很简单的,你只需要添加

ipl_image = ipl_image.applyLayers()

见:

ipl_image = ipl_image = self.webcam.getImage().binarize().invert() 
    ipl_image.drawRectangle(30,50,100,100,color=Color.RED,width=3) 
    ipl_image.drawText('ola galera',80,190,fontsize=50) 
    ipl_image = ipl_image.applyLayers() 


    data = ipl_image.getBitmap().tostring() 
    image = QtGui.QImage(data, ipl_image.width, ipl_image.height, 3 * ipl_image.width, QtGui.QImage.Format_RGB888) 
    pixmap = QtGui.QPixmap() 
    pixmap.convertFromImage(image.rgbSwapped()) 
    self.MainWindow.label.setPixmap(pixmap)