通过查看您的代码:
//if (imageMask.at(xx,yy)[0] < 10){
// Copy to original image on (y,x) places the pixel of xx,yy mask
humanROI.at(y,x)[0] = imageMask.at(xx,yy)[0];
humanROI.at(y,x)[1] = imageMask.at(xx,yy)[1];
humanROI.at(y,x)[2] = imageMask.at(xx,yy)[2];
//}
很容易发现问题。缺少模板规范。
您可以将其更改为以下内容:
//if (imageMask.at(xx,yy)[0] < 10){
// Copy to original image on (y,x) places the pixel of xx,yy mask
humanROI.at<uchar>(y,x)[0] = imageMask.at<uchar>(xx,yy)[0];
humanROI.at<uchar>(y,x)[1] = imageMask.at<uchar>(xx,yy)[1];
humanROI.at<uchar>(y,x)[2] = imageMask.at<uchar>(xx,yy)[2];
//}
甚至更好:
//if (imageMask.at(xx,yy)[0] < 10){
// Copy to original image on (y,x) places the pixel of xx,yy mask
humanROI.at<Vec3b>(y,x) = imageMask.at<Vec3b>(xx,yy);
//}
这应该可以解决编译错误,但是
humanROI
在灰度中,您可以执行以下操作:
Mat humanColorROI;
cvtColor( humanROI, humanColorROI, CV_GRAY2BGR );
获取3通道灰色图像。这样应该可以。
P、 S:关于你检测到尸体后的停车,可能是因为它撞车了,或者你只调用了一次这个函数?最好再问一个问题,让你从更多的成员那里得到帮助,让其他成员更快地找到答案。