如何使我的OpenCV识别更加准确?我之前只是使用Haar级联在CCTV的灰度帧中检测上半身,但这消耗了大量资源,而且结果不够好。我应该使用轮廓或其他方法来减少资源消耗吗?我也有一块GPU,但不知道如何连接以便我的计算使用GPU。
我的摄像头通过IPC连接到我的CCTV,过了一段时间后,它就停止输出帧,并返回此错误。
error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
回答:
我们从结尾开始逐步分析问题。
error: (-215:Assertion failed) !_src.empty() in function’cv::cvtColor’
这个错误出现是因为没有可用的帧进行转换。这可能是由于摄像头断开连接或帧不适当引起的。我建议你在处理前检查任何帧是否可用:
ret,frame=vcap.read()
# 如果帧读取正确,ret为True
if not ret:
print("无法接收帧(流结束?)。退出...")
break
另一方面,你询问如何使检测更加准确。首先,haarcascade
并不是一个完美的工具,它的优点在于速度快。根据你的硬件规格,你可以选择其他类型的AI算法,如YOLO、R-CNN等。如果你坚持使用haarcascades
,你应该根据具体情况定义参数。你可以查看detectMultiscale所包含的参数。