Mal*_*ian 5 c++ qt image image-processing qimage
我有一个图像,我想将这个图像分成n个部分.所以我想知道的是我怎样才能用QImage做到这一点?或者这个任务有更好的(表现明智的)Qt类吗?
例如,想象我有一个由1920x1080像素组成的图像,我想将它分成100个,这意味着每个部分将包含192x108像素.请注意,我不想创建相同的缩放到192x108的片段.每件作品都是主图片的一部分.
我附上了一张图片,让我的问题更加清晰.这个图像由1920x1080像素组成,每个部分都是由192x108像素组成的网格,我想将它们作为QImage对象处理,而不是实际将它分成100个.
有没有办法用QImage做到这一点?性能在这里很重要,因为我将分析每件作品,通常会有超过1000件.
谢谢您的帮助!
编辑:两种方法都很完美,但是alexisdm的方法更复杂,更低级,但速度更快.jmk的方法更容易使用,但速度较慢.
谢谢你的回答.
ale*_*sdm 11
您可以QImage使用相同的步幅(每行字节数)和格式作为源图像创建一个不复制任何数据,并将原始数据缓冲区(对应于所需的起始位置的偏移量)传递给以下构造函数之一QImage:
QImage createSubImage(QImage* image, const QRect & rect) {
size_t offset = rect.x() * image->depth() / 8
+ rect.y() * image->bytesPerLine();
return QImage(image->bits() + offset, rect.width(), rect.height(),
image->bytesPerLine(), image->format());
}
Run Code Online (Sandbox Code Playgroud)
只要子QImage存在,源图像就必须存在.
但是,如果分析代码尝试直接访问图像原始数据而不使用或QImage::bytesPerLine(),则可能无效.QImage::scanLine()QImage::pixel()
| 归档时间: |
|
| 查看次数: |
3870 次 |
| 最近记录: |