可以使用OpenCV的内置跟踪器,效果可能因环境和跟踪对象而异。如果跟踪效果不理想,您可以尝试其他类型的跟踪器,如MOSSE、CSRT等。跟踪可能会在物体快速移动、遮挡或光线变化时失效。
具体实现代码如下:
import cv2 def initialize_tracker(frame): """初始化跟踪器并选择ROI""" tracker = cv2.TrackerKCF_create() roi = cv2.selectROI('Select ROI', frame, False) tracker.init(frame, roi) return tracker, roi def main(): # 初始化视频捕获 cap = cv2.VideoCapture(0) # 使用默认摄像头,如果有多个摄像头,可以尝试更改这个数字 if not cap.isOpened(): print("无法打开摄像头") exit() # 读取一帧图像 ret, frame = cap.read() if not ret: print("无法获取图像") cap.release() exit() # 初始化跟踪器并选择ROI tracker, roi = initialize_tracker(frame) tracking = True # 主循环 while True: ret, frame = cap.read() if not ret: print("无法获取图像") break if tracking: # 更新跟踪器 success, box = tracker.update(frame) if success: # 绘制边界框 x, y, w, h = [int(v) for v in box] cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2) else: cv2.putText(frame, "Tracking failure detected", (100, 80), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2) # 显示帧 cv2.imshow('Tracking', frame) # 等待键盘输入 key = cv2.waitKey(1) & 0xFF if key == ord('q'): # 按 'q' 退出 break elif key == ord('r'): # 按 'r' 重新选择ROI cv2.destroyWindow('Select ROI') tracker, roi = initialize_tracker(frame) tracking = True # 释放资源 cap.release() cv2.destroyAllWindows() if __name__ == "__main__": main()
网友回复
DLNA与UPnP的区别和不同?
苏超自建抢票app,通过先预约再抽签化解高并发抢票?
python如何让给电脑在局域网中伪装成电视接收手机的投屏图片视频播放?
如何结合python+js如何自己的视频编码与加密播放直播?
python如何在电脑上通过局域网将本地视频或m3u8视频投屏电视播放?
腾讯视频爱奇艺优酷vip电影电视剧视频如何通过python绕过vip收费直接观看?
有没有可免费观看全球电视台直播m3u8地址url的合集?
有没有实现观影自由的免vip影视苹果 CMS V10 API的可用url?
python如何实时检测电脑usb插入检测报警?
如何判断真人操作的鼠标移动直线轨迹与机器操作的轨迹?