if ‘youtube.com/’ in url or ‘youtu.be/’ in url: # if source is YouTube videoTypeError: argument of type ‘int’ is not iterable
当我在使用yolov5中的detect.py文件调用摄像头时报了这个错误,我们需要在datasets.py文件中找到下面这行代码:
if 'youtube.com/' in url or 'youtu.be/' in url: # if source is YouTube video
check_requirements(('pafy', 'youtube_dl'))
import pafy
url = pafy.new(url).getbest(preftype="mp4").url
cap = cv2.VideoCapture(url)
方法一
将url改成str类型
if 'youtube.com/' in str(url) or 'youtu.be/' in str(url): # if source is YouTube video
check_requirements(('pafy', 'youtube_dl'))
import pafy
url = pafy.new(url).getbest(preftype="mp4").url
cap = cv2.VideoCapture(url)
方法二
我个人使用方法一之后依旧报错,需要修改这两处代码
第一处:

第二处:进行如下修改
# time.sleep(1 / self.fps) # wait time
if (self.fps != 0): time.sleep(1 / self.fps)
使用上面的两个方法就能顺利调用摄像头了!
文章讲述了在使用Yolov5的detect.py脚本从YouTube获取视频流时遇到的TypeError问题。错误出现在尝试检查URL是否包含youtube.com/或youtu.be/时,由于URL变量的类型错误导致。解决方案包括将URL转换为str类型以及调整与fps相关的代码。修改后,脚本能成功调用摄像头并避免错误。

3180

被折叠的 条评论
为什么被折叠?



