首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在TrackerCSRT上使用setInitialMask?

如何在TrackerCSRT上使用setInitialMask?
EN

Stack Overflow用户
提问于 2018-08-19 01:40:10
回答 4查看 2K关注 0票数 3

我正在使用TrackerCSRT进行视频中的对象跟踪,目前我在跟踪器上使用init方法来设置region of interest

代码语言:javascript
运行
复制
tracker = cv2.TrackerCSRT_create()
tracker.init(frame, region_of_interest)

感兴趣的区域包括我的对象,但它也包括来自背景或其他对象的无关像素。

我想使用蒙版来细化我感兴趣的像素。浏览一下文档,我可以看到方法setInitialMask on the C++ version,但在Python包装器中找不到对应的方法。

如何在TrackerCSRT openCV Python**?** 上的中设置掩码

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-08-26 21:32:03

我创建了一个Pull Request来启用cv::TrackerCSRT::setInitialMask()。

另外,可以使用下面的python代码来处理params。

代码语言:javascript
运行
复制
tracker = cv2.TrackerCSRT_create()
tracker.save("default_csrt.xml") // saves default values of the Tracker
                                    you can rename default_csrt.xml-> custom_csrt.xml 
                                    and change values in it and use it load params

fs = cv2.FileStorage("custom_csrt.xml",cv2.FILE_STORAGE_READ)
fn = fs.getFirstTopLevelNode()
tracker.read(fn)
票数 11
EN

Stack Overflow用户

发布于 2018-08-23 12:31:30

目前,你还不能,但如果你准备重建OpenCV,你可以做到。

为OpenCV C++模块创建Python绑定由C++文件中的标记控制,如here文档所示。在编写本文时,C++ declaration of setInitialMask()还没有为其创建Python绑定的标记,因此无法访问它。我预计这是因为TrackerCSRT实现只有几个月的历史,随着它的成熟,Python绑定将会紧随其后。

但是,如果您准备在您的系统上重新构建OpenCV (如果您以前没有这样做过,这可能会有一点挑战),让setInitialMask()可以从Python中访问应该和向该声明添加CV_WRAP宏(如上面的文档中所解释的)并重新构建一样简单。

网上有相当多关于如何构建OpenCV的指南,但由于我已经有一段时间没有亲自动手了,而且方法在某种程度上依赖于平台,所以我不推荐其中一种。

希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2018-08-19 02:41:26

我不知道setInitialMask,但在python中,您可以使用cv2.selectROI()方法选择您感兴趣的区域。

一个blog post on tracking objects in a video can be found here和相关的代码,一步一步的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51911171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档