Класс Image
не является типом POD, поэтому вы не можете отправить его, используя MPI_Send
Самый простой способ сделать это - отправить BLOB-данные, которые вы можете получить из объекта Image, но они могут быть неоптимальными. Итак, сделайте это так:
Image testImage;
// read in the file
testImage.read("image.png");
Blob blob;
testImage.write( & blob );
int size = blob.length();
MPI_Send( &size, sizeof( size ), MPI_BYTE, i , 100, MPI_COMM_WORLD);
MPI_Send( blob.data(), blob.length(), MPI_BYTE, i , 100, MPI_COMM_WORLD);
Для получения:
int size = 0;
MPI_Recv( &size, sizeof( size ), MPI_BYTE, 0, 100, MPI_COMM_WORLD, &status);
std::vector< unsigned char > tempBuffer( size, 0 );
MPI_Recv( &tempBuffer[0], tempBuffer.size(), MPI_BYTE, 0, 100, MPI_COMM_WORLD, &status);
Blob blob( &tempBuffer[0], tempBuffer.size());