关于AttributeError: module ‘cv2.legacy‘ has no attribute ‘TrackerCSRT_crate‘的报错处理

这篇具有很好参考价值的文章主要介绍了关于AttributeError: module ‘cv2.legacy‘ has no attribute ‘TrackerCSRT_crate‘的报错处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于AttributeError: module 'cv2.legacy' has no attribute 'TrackerCSRT_crate'的报错

当我第一次运行多目标追踪的时候,编译器给出了这样的一个报错,导致代码无法运行

查看报错之后我发现是OpenCV的问题,直接就打开查看版本以及问题

关于AttributeError: module ‘cv2.legacy‘ has no attribute ‘TrackerCSRT_crate‘的报错处理

 两个包以及版本其实并没有什么问题,但是一直出现同样的问题,其实我在这之前我做个一次单目标的追踪,依旧是同样的问题。

有了第一次的经验,那么这一次也知道从哪里开始找,我查询了各种资料,也尝试了在目标追踪的模型前面加上legacy

关于AttributeError: module ‘cv2.legacy‘ has no attribute ‘TrackerCSRT_crate‘的报错处理

 但是结果还是一样,依旧是原来的问题,于是我开始从opencv的版本入手,经过查询之后才知道,原来这个模型在opencv的版本太高的时候是不能用的,那么问题就简单了

因为我的版本在修改之前是4.1的,上面的图片是修改过的版本,

解决方案如下:

1.删除opencv包,指令:pip uninstall opencv-python

2删除opencv-contrib的包,指令:pip uninstall opencv-contrib-python

3.重新下载低版本的opencv包,pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python==3.4.1.15

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-contrib-python==3.4.1.15

这是两个带清华镜像源的导包指令

当我们尝试导入低版本的opencv之后才使用终端运行我们的代码试试

效果如下:

关于AttributeError: module ‘cv2.legacy‘ has no attribute ‘TrackerCSRT_crate‘的报错处理

 注::::python版本为3.6,3.7以及更高版本需要主要opencv的适应版本

下面奉上代码:

from imutils.video import VideoStream
import argparse
import imutils
import time
import cv2
ap=argparse.ArgumentParser()
ap.add_argument('-v','--video',type=str,
                help='path to input video file')
ap.add_argument('-t','--tracker',type=str,default='kcf',
                help='OpenCV object trackert type')

args=vars(ap.parse_args())

OPENCV_OBJECT_TRACKERS={
    'csrt':cv2.TrackerCSRT_create,
    'kcf':cv2.TrackerKCF_create,
    'boosting':cv2.TrackerBoosting_create,
    'mil':cv2.TrackerMIL_create,
    'tld':cv2.TrackerTLD_create,
    'medianflow':cv2.TrackerMedianFlow_create,
    'mosse':cv2.TrackerMOSSE_create
}

trackers=cv2.MultiTracker_create()

if not args.get('video',False):
    print('[INFO] starting video stream...')
    vs=VideoStream(src=0).start()
    time.sleep(1.0)

else:
    vs=cv2.VideoCapture(args['video'])

while True:

    frame=vs.read()
    frame=frame[1] if args.get('video',False) else frame
    if frame is None:
        break

    frame=imutils.resize(frame,width=600)

    (succes,boxes)=trackers.update(frame)

    for box in boxes:
        (x,y,w,h)=[int(v) for v in box]
        cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)

    cv2.imshow('Frame',frame)
    key=cv2.waitKey(1) &0xFF

    if key==ord('s'):
        box=cv2.selectROI('Frame',frame,fromCenter=False,showCrosshair=True)

        tracker=OPENCV_OBJECT_TRACKERS[args['tracker']]()
        trackers.add(tracker,frame,box)

    elif key==ord('q') or key==27:
        break

if not args.get('video',False):
    vs.stop()
else:
    vs.release()

cv2.destroyAllWindows()

#python multi_object_tracking.py --tracker csrt
# python multi_object_tracking.py --video videos/soccer_01.mp4 --tracker csrt
# python multi_object_tracking.py --video videos/los_angeles.mp4 --tracker csrt
# python multi_object_tracking.py --video videos/soccer_02.mp4 --tracker csrt
# python multi_object_tracking.py --video videos/nascar.mp4 --tracker csrt
#import the necessary packages

 文章来源地址https://www.toymoban.com/news/detail-449378.html

到了这里,关于关于AttributeError: module ‘cv2.legacy‘ has no attribute ‘TrackerCSRT_crate‘的报错处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包