根据您提供的代码,图像被拉伸的原因可能是由于在计算平均值时没有正确处理像素值的范围。当将灰度图像存储为CV_8U类型时,像素值范围应该在0-255之间。
请尝试使用浮点数进行求和操作,并在计算平均值时将结果转换回uchar类型:
cv::Mat averageImage(height, width, CV_32F, cv::Scalar(0));
for (int j = 0; j < width; ++j)
{
for (int i = 0; i < height; ++i)
{
float sum = 0;
for (int k = 0; k < images.size(); ++k)
{
sum += images[k].at<uchar>(i, j);
}
averageImage.at<float>(i, j) = sum / static_cast<float>(images.size());
}
}
averageImage.convertTo(finalAverageImage, CV_8U);
这样做会确保在计算平均值时保留更多的精度,并避免出现图像拉伸问题。
内容由零声教学AI助手提供,问题来源于学员提问