我是 OpenCV2 的新手,正在从事情感识别项目,并希望将面部图像与参考面部图像对齐。我想在转向旋转之前让图像翻译工作。当前的想法是在 x 和 y 坐标的有限范围内运行搜索,并使用平方差之和作为误差度量来选择最佳 x/y 参数来对齐图像。我正在使用 OpenCV face_cascade 函数来检测人脸图像,所有图像都被调整为固定的(128x128)。问题:我需要修改 Mat 图像的哪些参数才能在 x 和 y 轴上沿正/负方向移动图像?我相信 Mat 数据类型不再支持 setImageROI?我有两张脸的投资回报率,但我不确定如何使用它们。
void alignImage(vector<Rect> faceROIstore, vector<Mat> faceIMGstore)
{
Mat refimg = faceIMGstore[1]; //reference image
Mat dispimg = faceIMGstore[52]; // "displaced" version of reference image
//Rect refROI = faceROIstore[1]; //Bounding box for face in reference image
//Rect dispROI = faceROIstore[52]; //Bounding box for face in displaced image
Mat aligned;
matchTemplate(dispimg, refimg, aligned, CV_TM_SQDIFF_NORMED);
imshow("Aligned image", aligned);
}
这种方法的想法是基于Richard Szeliski Working on Windows with OpenCV 2.4 的图像对齐教程。任何建议都非常感谢。