我有应用程序从照相机获取图像以供将来处理。最初,我将图像作为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
答案 0 :(得分:0)
问题是,高分辨率相机图像太大而无法由 32 位库处理,迁移到 64 位 Qt 解决了这个问题。