关于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的适应版本
下面奉上代码:文章来源:https://www.toymoban.com/news/detail-449378.html
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模板网!