我有四个固定位置的相机,但拍摄的照片放错了地方。我简单地将它们重叠然后我想缝合图像,但是使用加权平均融合方法融合后的图像不会消除接缝。我的代码有问题吗?
Mat img1 = imread("D:\\1.jpg");
Mat img2 = imread("D:\\2.jpg");
Mat img3 = imread("D:\\3.jpg");
Mat img4 = imread("D:\\4.jpg");
double dst_width = 4.1* img1.cols;
double dst_height = 2.5* img1.rows;
Mat result(dst_height, dst_width, CV_8UC3, Scalar(0, 0, 0));
img3.copyTo(result(Rect(2 * img1.cols - 65, 106, img3.cols, img3.rows)));
Mat resultback1;
result.copyTo(resultback1);
Mat half1(result, cv::Rect(img1.cols - 3, 75, img2.cols, img2.rows));
img2.copyTo(half1);
Mat result_linerblend0 = result.clone();
namedWindow("22", 0);
imshow("22", result_linerblend0);
waitKey(0);
//img2.copyTo(result(Rect(img1.cols -3, 75, img2.cols, img2.rows)));
for (int i = 0; i < img2.rows - 31; i++)
{
for (int j = 0; j <62; j++)
{
double dblend = 0.0;
result_linerblend0.at<Vec3b>(106 + i, 2 * img1.cols - 65 + j)[0] = result.at<Vec3b>(106 + i, 2 * img1.cols - 65 + j)[0] * dblend + resultback1.at<Vec3b>(106 + i, 2 * img1.cols - 65 + j)[0] * (1 - dblend);
result_linerblend0.at<Vec3b>(106 + i, 2 * img1.cols - 65 + j)[1] = result.at<Vec3b>(106 + i, 2 * img1.cols - 65 + j)[1] * dblend + resultback1.at<Vec3b>(106 + i, 2 * img1.cols - 65 + j)[1] * (1- dblend);
result_linerblend0.at<Vec3b>(106 + i, 2 * img1.cols - 65 + j)[2] = result.at<Vec3b>(106 + i, 2 * img1.cols - 65 + j)[2] * dblend + resultback1.at<Vec3b>(106 + i, 2 * img1.cols - 65 + j)[2] * (1 - dblend);
dblend = dblend +1/ 62;
}
}
namedWindow("2", 0);
imshow("2", result_linerblend0);
waitKey(0);
这是我的拼接图像,可以发现拼接缝没有消失。