gpt4 book ai didi

python-3.x - 在python中设置openCV跟踪API的参数

转载 作者:行者123 更新时间:2023-12-03 14:58:27 25 4
gpt4 key购买 nike

我正在尝试在 Python 中使用 openCV 跟踪 API 进行对象跟踪。我尝试了 this link 中的代码并且运行代码没有任何问题。但是,查看 openCV 文档 here ,我意识到每个跟踪算法都有参数。如何在python中设置这些参数?试图弄清楚这一点很困难,但没有成功。

最佳答案

4 年后的更新,适用于可能仍在寻找的任何人。对于 3.x 左右的 opencv-python-contrib 版本,您可以使用 sturkmen 的答案( from here )

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)
对于 opencv 4.x(我在 4.5 上,还没有检查更改何时发生),大多数跟踪器都有一个 Tracker*_Params() 方法。如果您想找到可用的参数,您可以运行例如
list(filter(lambda x: x.find('__') < 0, dir(cv2.TrackerCSRT_Params)))
总之,如果你想在 Python opencv 中设置跟踪器的参数,你可以做这样的事情(注意,我捏造了版本兼容性)
(major_ver, minor_ver, subminor_ver) = (cv2.__version__).split('.')
def set_CSRT_Params():
# Don't modify
default_params = {
'padding': 3.,
'template_size': 200.,
'gsl_sigma': 1.,
'hog_orientations': 9.,
'num_hog_channels_used': 18,
'hog_clip': 2.0000000298023224e-01,
'use_hog': 1,
'use_color_names': 1,
'use_gray': 1,
'use_rgb': 0,
'window_function': 'hann',
'kaiser_alpha': 3.7500000000000000e+00,
'cheb_attenuation': 45.,
'filter_lr': 1.9999999552965164e-02,
'admm_iterations': 4,
'number_of_scales': 100,
'scale_sigma_factor': 0.25,
'scale_model_max_area': 512.,
'scale_lr': 2.5000000372529030e-02,
'scale_step': 1.02,
'use_channel_weights': 1,
'weights_lr': 1.9999999552965164e-02,
'use_segmentation': 1,
'histogram_bins': 16,
'background_ratio': 2,
'histogram_lr': 3.9999999105930328e-02,
'psr_threshold': 3.5000000149011612e-02,
}
# modify
params = {
'scale_lr': 0.5,
'number_of_scales': 200
}
params = {**default_params, **params}
tracker = None
if int(major_ver) == 3 and 3 <= int(minor_ver) <= 4:
import json
import os
with open('tmp.json', 'w') as fid:
json.dump(params, fid)
fs_settings = cv2.FileStorage("tmp.json", cv2.FILE_STORAGE_READ)
tracker = cv2.TrackerCSRT_create()
tracker.read(fs_settings.root())
os.remove('tmp.json')
elif int(major_ver) >= 4:
param_handler = cv2.TrackerCSRT_Params()
for key, val in params.items():
setattr(param_handler, key, val)
tracker = cv2.TrackerCSRT_create(param_handler)
else:
print("Cannot set parameters, using defaults")
tracker = cv2.TrackerCSRT_create()
return tracker

关于python-3.x - 在python中设置openCV跟踪API的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45677651/

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