我正在使用TrackerCSRT
进行视频中的对象跟踪,目前我在跟踪器上使用init方法来设置region of interest
tracker = cv2.TrackerCSRT_create()
tracker.init(frame, region_of_interest)
感兴趣的区域包括我的对象,但它也包括来自背景或其他对象的无关像素。
我想使用蒙版来细化我感兴趣的像素。浏览一下文档,我可以看到方法setInitialMask
on the C++
version,但在Python
包装器中找不到对应的方法。
如何在TrackerCSRT
openCV
Python
**?** 上的中设置掩码
发布于 2018-08-26 21:32:03
我创建了一个Pull Request来启用cv::TrackerCSRT::setInitialMask()。
另外,可以使用下面的python代码来处理params。
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)
发布于 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的指南,但由于我已经有一段时间没有亲自动手了,而且方法在某种程度上依赖于平台,所以我不推荐其中一种。
希望这能有所帮助。
发布于 2018-08-19 02:41:26
我不知道setInitialMask
,但在python中,您可以使用cv2.selectROI()
方法选择您感兴趣的区域。
一个blog post on tracking objects in a video can be found here和相关的代码,一步一步的方法。
https://stackoverflow.com/questions/51911171
复制相似问题