gpt4 book ai didi

opencv - 获取帧序列的平均值

转载 作者:太空宇宙 更新时间:2023-11-03 20:57:29 24 4
gpt4 key购买 nike

我想通过将帧序列相加然后除以帧总数来计算帧序列的平均值。问题是我无法访问图像中的像素。我使用了这段代码。

for(i = 1; i <= N; i++){
image = imread(fileName.c_str(),0);
Mat Mean = Mat::zeros(width, height,image.type());
for(w = 0; w < image.rows ; w++)
for(h = 0; h < image.cols ; h++)
Mean.row(w).col(h) += (image.at<unsigned float>(w,h) / N);
}

我总是遇到 Assertion Failed 错误。我也试过:

(float)image.at<uchar>(w,h)

image.row(w).col(h)[0]

image.row(w).col(h).val[0]

但徒劳无功。

这是工作代码...但我无法显示最终结果,因为它是 float 的。

Mat Mean   = Mat::zeros(width, height,CV_32F); 
for(i = 1; i <= framesToLearn ; i++){
image = imread(fileName.c_str(),0);
accumulate(image, Mean);
}
Mean = Mean /framesToLearn;
imshow("mean",Mean);
waitKey(0);

最佳答案

也许尝试使用不同的方法:cv::accumulate:

cv::Mat avgImg;
avgImg.create(width, height,CV_32FC3);

for(i = 1; i <= N; i++){
image = imread(fileName.c_str(),0);
cv::accumulate(image, avgImg);
}

avgImg = avgImg / N;

请注意,如果您需要显示结果图像,您必须将其转换为 CV_8U 或对其进行标准化,例如:

Mat Mean   = Mat::zeros(width, height,CV_32F); 
for(i = 1; i <= framesToLearn ; i++){
image = imread(fileName.c_str(),0);
accumulate(image, Mean);
}
Mean = Mean /framesToLearn;
Mean.convertTo(Mean,CV_8U);
imshow("mean",Mean);
waitKey(0);

关于opencv - 获取帧序列的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20175143/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com