php网站建设外国参考文献,三明城乡建设网站,西安做公司网站的公司,平台网站的建设需求操作系统#xff1a;ubuntu22.04 OpenCV版本#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言#xff1a;C11
算法描述
更新一个运行平均值。
该函数计算输入图像 src 和累积器 dst 的加权和#xff0c;使得 dst 成为帧序列的运行平均值#xff1a; dst ( x , y… 操作系统ubuntu22.04 OpenCV版本OpenCV4.9 IDE:Visual Studio Code 编程语言C11
算法描述
更新一个运行平均值。
该函数计算输入图像 src 和累积器 dst 的加权和使得 dst 成为帧序列的运行平均值 dst ( x , y ) ← ( 1 − alpha ) ⋅ dst ( x , y ) alpha ⋅ src ( x , y ) if mask ( x , y ) ≠ 0 \texttt{dst} (x,y) \leftarrow (1- \texttt{alpha} ) \cdot \texttt{dst} (x,y) \texttt{alpha} \cdot \texttt{src} (x,y) \quad \text{if} \quad \texttt{mask} (x,y) \ne 0 dst(x,y)←(1−alpha)⋅dst(x,y)alpha⋅src(x,y)ifmask(x,y)0 也就是说alpha 调节更新速度累积器“忘记”早期图像的速度有多快。该函数支持多通道图像。每个通道独立处理。
accumulateWeighted是OpenCV中的一个函数用于计算图像序列的加权平均值。这个函数对于背景减除、运动检测等计算机视觉应用非常有用。它可以动态地更新一个图像的加权平均值而不需要存储整个图像序列。
函数原型
void cv::accumulateWeighted
(InputArray src,InputOutputArray dst,double alpha,InputArray mask noArray()
) 参数
参数src 输入图像可以是单通道或三通道8位或32位浮点数。参数dst 累积器图像通道数与输入图像相同32位或64位浮点数。参数alpha 输入图像的权重。参数mask 可选的操作掩码。
示例代码 #include iostream
#include opencv2/opencv.hppint main()
{// 加载图像cv::Mat frame cv::imread( /media/dingxin/data/study/OpenCV/sources/images/hawk.jpg, cv::IMREAD_GRAYSCALE );if ( !frame.data ){std::cout Could not open or find the image std::endl;return -1;}// 初始化累积加权平均图像cv::Mat weightedAverage cv::Mat::zeros( frame.size(), CV_32F );// 设置权重系数double alpha 0.05; // 减小权重系数使累积效果更平滑// 模拟多帧累积int numFrames 100; // 大幅增加累积次数for ( int i 0; i numFrames; i ){// 使用同一图像多次以模拟多帧情况cv::accumulateWeighted( frame, weightedAverage, alpha );// 打印累积过程中的最小值和最大值以便调试double minVal, maxVal;cv::minMaxLoc( weightedAverage, minVal, maxVal );std::cout Frame i 1 : MinVal minVal , MaxVal maxVal std::endl;}// 归一化处理double minVal, maxVal;cv::minMaxLoc( weightedAverage, minVal, maxVal );// 将累积加权平均图像转换回8位图像以便显示cv::Mat normalizedWeightedAverage;if ( maxVal minVal ){weightedAverage.convertTo( normalizedWeightedAverage, CV_8U, 255.0 / ( maxVal - minVal ), -minVal * ( 255.0 / ( maxVal - minVal ) ) );}else{// 如果最大值等于最小值直接归一化为255weightedAverage.convertTo( normalizedWeightedAverage, CV_8U, 255.0 );}// 显示原始图像cv::imshow( Original Image, frame );// 显示累积加权平均结果图像cv::imshow( Weighted Average Result, normalizedWeightedAverage );// 等待按键以便查看图像cv::waitKey( 0 );// 关闭所有窗口cv::destroyAllWindows();// 保存结果cv::imwrite( weighted_average_result.jpg, normalizedWeightedAverage );return 0;
}运行结果 感觉这个函数没怎么起作用两张图是一样的希望有高人能指导这个函数怎么用才效果明显