Problem with QImage and QPixmap



  • Hey! I am developing application which is using OpenCV for capturing and processing images from camera and Qt for displaying them.
    I don't know exactly why but application suddenly started to crash without any traceback. I was developing it on WinXp with python27. It worked fine on Windows 7 and python26 but after installing python27 on that computer it started to crash with both pythons.
    I was able to trace and extract code which causes the crash:
    @from PySide.QtGui import QApplication,QImage, QPixmap
    app = QApplication("test")
    (w,h)=(400,400);
    q_image = QImage("\255\0\0\0"(wh),
    w,h,
    QImage.Format_RGB32)
    q_image.save('qimage.jpg','JPG')
    pixmap=QPixmap(w,h)
    pixmap.convertFromImage(q_image)
    pixmap.save('qpixmap.jpg','JPG')
    exit()
    @
    This is not working at all (crashes on q_image.save()). When I change (w,h) to (200,200) it is working ok, but resulting images are not something that I would expect - image data is corrupted. This application crashes both with PySide and PyQt4.
    I am very new to Qt so there might be something that I am not doing, or doing it wrong. But it seems to me like a serious bug.
    Please help me, because I don't know how to handle that problem.



  • Try changing line 4 to this:
    @
    data = "\255\0\0\0"(wh)
    q_image = QImage(data,
    w,h,
    QImage.Format_RGB32)
    @



  • Thanks, it worked! I was using img.tostring() (from OpenCV), that is why I didn't think that it is going to be garbage collected and I didn't suspect that Qt is so smart to use the same memory instead of allocating and copying. Thanks again!


Log in to reply