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

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

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

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

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

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

 但是结果还是一样,依旧是原来的问题,于是我开始从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之后才使用终端运行我们的代码试试

效果如下:

 注::::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

 

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值