QImage ::转换了SEGFAULT

时间:2018-02-05 10:17:25

标签: c++ qt

我有应用程序从照相机获取图像以供将来处理。最初,我将图像作为QByteArray缓冲区,然后按如下方式处理它们:

QImage image;
QMatrix rm;
rm.rotate(90);//I need vertical aligned picture
image.loadFromData(buf_);//buf_ is raw data QByteArray
if(image.isNull())
{
    emit error();
    return;
}
QImage trans_image = image.transformed(rm);
trans_image.save(path_, "JPG", 100);

常规我在prelast字符串上崩溃。

Stack看起来像这样:

1   qt_memrotate270_tiled_unpacked<unsigned int>                                                                                      qmemrotate.cpp           212  0x1b2ec6c  
2   qt_memrotate270_template<unsigned int>                                                                                            qmemrotate.cpp           275  0x1b2ec6c  
3   qt_memrotate270                                                                                                                   qmemrotate.cpp           315  0x1b2ec6c  
4   qt_memrotate270_32                                                                                                                qmemrotate.cpp           377  0x1b2ecd3  
5   rotated90                                                                                                                         qimage.cpp               4520 0x1a07c3f  
6   QImage::transformed                                                                                                               qimage.cpp               4627 0x1a0a502  
7   QImage::transformed                                                                                                               qimage.cpp               2792 0x1a0b1ce  
8   Camera::processImage                                                                                                              camera.cpp               293  0x438bea   
...

有时需要5-6张照片,有时需要50-60张照片。

图像变量在调试器中看起来很不错,而不是无效或类似的东西。这种崩溃的原因是什么?如何处理它(至少发现错误以避免段错)?

Qt 5.10.0

1 个答案:

答案 0 :(得分:0)

问题是,高分辨率相机图像太大而无法由 32 位库处理,迁移到 64 位 Qt 解决了这个问题。