OpenCV背景减法学习率不能改变

2023-12-26

我希望训练一个 50 帧的背景区域,并使用这个预训练的模型进行背景减除。模型在训练后停止更新。

这是我的代码

import cv2
print "This program is for background subtraction with pre-trained model\n"

Training_Floder = "/Users/yuyang/Desktop/img1/"
Start_Frame_Num = 1
End_Frame_Num = 51

cv2.namedWindow("BG_IMAGE")

fgbg = cv2.createBackgroundSubtractorMOG2(50, 16, False)
font = cv2.FONT_HERSHEY_SIMPLEX



for index in range(Start_Frame_Num, End_Frame_Num):
    Img_File_Name = Training_Floder + str(index) + ".jpg"
    Img = cv2.imread(Img_File_Name)
    fgmask = fgbg.apply(Img, -1)
    BG_IMG = fgbg.getBackgroundImage()
    #######
    cv2.putText(BG_IMG,str(index),(10,500), font, 1,(255,255,255),2)
    cv2.imshow("BG_IMAGE", BG_IMG)
    #######
    cv2.waitKey(0)

Testing_Floder = "/Users/yuyang/Desktop/New/"
Test_Start = 1
Test_End = 100

for index in range(Test_Start, Test_End):
    Img_File_Name = Testing_Floder + str(index) + ".jpg"
    Img = cv2.imread(Img_File_Name)
    fgmask1 = fgbg.apply(Img, 0)
    BG_IMG1 = fgbg.getBackgroundImage()
    cv2.putText(BG_IMG1,str(index),(10,500), font, 1,(255,255,255),2)
    cv2.imshow("BG_IMAGE", BG_IMG1)
    cv2.waitKey(0)

根据评论

学习率参数位于函数“apply()”中。

@param learningRate 
The value between 0 and 1 that indicates how fast the background 
model is learnt. Negative parameter value makes the algorithm to 
use some automatically chosen learning rate. 0 means that the 
background model is not updated at all, 1 means that the background 
model is completely reinitialized from the last frame.

CV_WRAP virtual void apply(InputArray image, OutputArray fgmask, double learningRate=-1) = 0;"

不过,我在这里尝试了几种学习率:

fgmask = fgbg.apply(Img, -1) or
fgmask = fgbg.apply(Img, 0) or
fgmask = fgbg.apply(Img, 1) or
fgmask = fgbg.apply(Img, 0.00001)

训练背景结果不变。 这意味着我在测试时不能保持预训练模型不变!

我的代码有什么问题吗? 有什么办法可以改变学习率吗?

这是一些结果

测试图像 #1 的背景扣除结果 https://i.stack.imgur.com/Oeiy7.jpg

测试图像#40的背景扣除结果 https://i.stack.imgur.com/r3erO.jpg

从上面的结果可以明显看出,尽管我将学习率设置为0,但训练的背景图像在测试时发生了变化。

fgmask1 = fgbg.apply(Img, 0)

所以使用python实现的正确方法是

fgbg = cv2.createBackgroundSubtractorMOG2(50, 16, False)
fgbg.apply(input, output, learning_rate)

与 C++ 实现完全相同。 学习率必须是第三个参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV背景减法学习率不能改变 的相关文章

随机推荐

  • Excel 求解器忽略 VBA 中的约束

    我正在尝试使用求解器找到简单投资组合的最大回报 在工作表中直接使用 Solver 可以正常工作 但在 VBA 中设置命令时则不然 相反 正如您从屏幕截图中看到的 它忽略了其中一个约束 T10 中计算的权重总和应 1 有趣的是 如果我将第三行
  • cx_Freeze 帮助:有没有办法不打开控制台?

    我正在尝试将 python 游戏 用 pygame 制作 转换为 Windows 的 exe 文件 我使用 cx Freeze 进行了操作 那里没有问题 问题是 当我启动 myGame exe 时 它 会打开正常的 Pygame 窗口和控制
  • 如何清空 BlockingCollection

    我有一个线程将项目添加到BlockingCollection 在我正在使用的另一个线程上foreach var item in myCollection GetConsumingEnumerable 如果出现问题 我想打破我的 foreac
  • Vimscript:列出的缓冲区数量

    在我的 vim 脚本中 我需要获取所有被视为列出 可列出的缓冲区的计数 即所有执行此操作的缓冲区 not具有未列出的 u 属性 推导该值的推荐方法是什么 你可以使用bufnr 获取最后一个缓冲区的编号 然后创建一个 列出从 1 到该数字并过
  • 使用指针嵌套 std::map

    我在地图内使用地图 并希望访问第二个地图中的特定成员 std map
  • 在Web Api中使用Postman授权属性认证

    我正在使用 RESTful 服务 并发现 Postman 是 GET POST 和测试 API 的最佳插件之一 我在邮递员中找到基本身份验证 无身份验证 DIgest Auth OAuth AWS 如何测试授权控制器和方法 我知道授权属性检
  • 为什么这个SQL语句很慢?

    我有一个包含大约 100 万条记录的表 运行 SQL Server 2008 Web 我有一个搜索例程 尝试匹配产品代码和产品描述 但在某些情况下 速度非常慢 下面是 精简的 sql 语句 WITH AllProducts AS SELEC
  • 当进行相同的 PDO 查询(参数不断变化)时,我是每次都调用prepare(),还是只调用一次?

    我正在尝试学习如何使用 PDO 并且需要帮助理解一些内容 我一直读到使用 PDO 的最大好处之一是它比mysql 当一遍又一遍地进行类似的查询时 我需要进行一个完全相同的查询 只是绑定参数每次都会改变 但查询的结构是相同的 所以 这是我的问
  • 如何覆盖 Riverpod StateNotifier 的状态以进行测试

    我想覆盖我的StateNotifierProvider手动声明以进行测试 可以使用以下方式覆盖提供者ProviderContainer or ProviderScope 但它只提供了覆盖通知者的选项 而不是状态 我的问题是我应该如何覆盖状态
  • Jquery图像叠加?

    我希望使用 jquery 将右上角的图像覆盖在另一张图像上 基本上 当用户的鼠标悬停在图像上方时 我希望第二个图像出现在右上角的另一张图像上方 然后当用户停止悬停在图像上时消失 我如何用 Jquery 实现这一点 Senad 是很正确的 你
  • 父进程如何通过调用_exit的子进程的wait来获取终止状态

    我已阅读以下声明 给 exit 的 status 参数定义了终止状态 该进程 当该进程的父进程可用时 该进程可用 调用 wait 进程总是由 exit 成功终止 即 出口 一去不复返 Question If exit不返回 父进程如何获取终
  • ASP.Net MVC jQuery AJAX 路由问题

    我的页面是domain com home details 1 在我的 jQuery AJAX 调用中 我有以下内容 但是当它进行该调用时 它会调用domain com home details home getdata 我该怎么做才能让它得
  • React Native:无法导入 csv 文件

    我有一个csv文件位于 src data文件夹 我希望导入它以便能够传递到帕帕帕斯库被解析为JSON图书馆 这是我用来执行此操作的脚本 import Papa from papaparse import file from src data
  • Micronaut-Core:如何创建动态端点

    简单的问题 是否可以创建端点而无需 Endpoint 我想通过文件并根据其上下文的内容创建相当动态的端点 Thanks 更新一下我的想法 我想创建类似插件系统的东西 以使我的应用程序对于维护和未来功能更具可扩展性 值得一提的是 我正在使用
  • 如何将pyspark数据帧写入HDFS,然后如何将其读回数据帧?

    我有一个非常大的 pyspark 数据框 所以我想对其子集进行预处理 然后将它们存储到hdfs 后来我想把它们全部读完并合并在一起 谢谢 将 DataFrame 写入 HDFS Spark 1 6 df write save target
  • 在新的 stdClass 中声明匿名函数

    只是想知道为什么这样的东西不起作用 public function address name if isset this gt addresses name address new stdClass address gt city func
  • 底层连接已关闭:发送时发生意外错误。--- NuGet

    在尝试恢复 nuget 包时 我得到以下信息 错误 1 基础连接已关闭 发送时发生意外错误 错误 2 底层连接已关闭 无法建立 SSL TLS 安全通道的信任关系 错误 3 命令 D root nuget NuGet exe install
  • 如何用猫鼬进行分页

    我想在我的收藏中添加分页功能 如何在单个查询中找到具有 开始 和 限制 位置的文档并获取文档总数 您无法在一次查询中获得两个结果 你能做的最好的事情就是用一只 Mongoose 让它们都得到Query http mongoosejs com
  • max_user_connections 或超出 ip 连接限制 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我收到以下 PHP 错误消息 Use
  • OpenCV背景减法学习率不能改变

    我希望训练一个 50 帧的背景区域 并使用这个预训练的模型进行背景减除 模型在训练后停止更新 这是我的代码 import cv2 print This program is for background subtraction with p