我有一个应用程序,从相机获取图像为未来的处理。最初,我将图像作为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字符串上崩溃。
堆栈看起来像这样:
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
发布于 2021-03-13 16:20:28
问题是,高分辨率摄像头图像太大,32位库无法处理,迁移到64位Qt解决了这个问题。
https://stackoverflow.com/questions/48620231
复制相似问题