1.QImage转vtkImageData
vtkSmartPointer<vtkImageData> toVtkImageData(const QImage* image)
{
const int width = image->width();
const int height = image->height();
QImage::Format format = image->format();
if (format == QImage::Format::Format_RGB888) {
} else {
return vtkSmartPointer<vtkImageData>(nullptr);
}
vtkSmartPointer<vtkImageData> pointer = vtkSmartPointer<vtkImageData>::New();
pointer->SetDimensions(width, height, 1);
pointer->SetOrigin(-0.5 * width, -0.5 * height, 1);
vtkNew<vtkUnsignedCharArray> colorArray;
colorArray->SetNumberOfComponents(3);
colorArray->SetNumberOfTuples(static_cast<vtkIdType>(width) * height);
int i = 0;
for (int row = height - 1; row >= 0; row--) {
const unsigned char* line = image->scanLine(row);
for (int col = 0; col < width; col++) {
const unsigned char* rgb = &line[col * 3];
colorArray->SetValue(i++, rgb[0]);
colorArray->SetValue(i++, rgb[1]);
colorArray->SetValue(i++, rgb[2]);
}
}
pointer->GetPointData()->SetScalars(colorArray);
return pointer;
}