因此,我已将图像划分为cv::Mat
类型的四个象限,并希望将它们通过MPI_Send
,我该如何处理?这是我当前的代码:
void parallel(cv::Mat img){
int id;
int ierr;
int p;
ierr = MPI_Init ( NULL,NULL ); // Initialize MPI.
if ( ierr != 0 )
{
cout << "\n";
cout << "MPI - Fatal error!\n";
cout << " MPI_Init returned nonzero ierr.\n";
exit ( 1 );
}
ierr = MPI_Comm_size ( MPI_COMM_WORLD,&p ); // Get the number of processes.
ierr = MPI_Comm_rank ( MPI_COMM_WORLD,&id ); // Get the individual process ID.
if (id == 0){
cv::Mat top_left
= img(cv::Range(0,img.rows / 2 - 1),cv::Range(0,img.cols / 2 - 1));
cv::Mat top_right
= img(cv::Range(0,cv::Range(img.cols / 2,img.cols - 1));
cv::Mat bottom_left
= img(cv::Range(img.rows / 2,img.rows - 1),img.cols / 2 - 1));
cv::Mat bottom_right
= img(cv::Range(img.rows / 2,img.cols - 1));
MPI_Send(top_left,1,MPI_INT,MPI_COMM_WORLD);
MPI_Send(top_right,2,MPI_COMM_WORLD);
MPI_Send(bottom_left,3,MPI_COMM_WORLD);
MPI_Send(bottom_right,4,MPI_COMM_WORLD);
由于MPI_Send行是矩阵而不是int,显然MPI_Send行是错误的,我该如何解决?
我为信息起见尝试跑步,这是错误之一:
main.cpp:43:59: error: cannot convert ‘cv::Mat’ to ‘const void*’ for argument ‘1’ to ‘int MPI_Send(const void*,int,MPI_Datatype,MPI_Comm)’
MPI_Send(bottom_right,MPI_COMM_WORLD);