码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python Opencv实践 - 视频目标追踪MeanShift


     参考资料:

    opencv/python标定时用到的几个函数意义_criteria opencv_是三水不是泗水的博客-CSDN博客

    python+OpenCV笔记(二十六):视频追踪(meanshift、Camshift)_cv2.meanshift_ReadyGo!!!的博客-CSDN博客

    1. import cv2 as cv
    2. import numpy as np
    3. import matplotlib.pyplot as plt
    4. #打开视频
    5. video = cv.VideoCapture("../SampleVideos/milo.mp4")
    6. #读取第一帧图像
    7. ret,frame = video.read()
    8. plt.figure(figsize=(16,16))
    9. plt.imshow(frame[:,:,::-1])
    10. cv.imwrite("tmp.jpg", frame)
    11. #设置跟踪目标的位置(行,高,列,宽)
    12. row,height,col,width = 650,115,350,140
    13. obj_track_window = (col, row, width, height)
    14. #设置ROI区域
    15. roi = frame[row:row+height,col:col+width]
    16. plt.imshow(roi[:,:,::-1])
    17. #计算ROI的直方图
    18. #1. 转换到HSV色彩空间
    19. roi_hsv = cv.cvtColor(roi, cv.COLOR_BGR2HSV)
    20. #2. 计算ROI区域直方图
    21. roi_hist = cv.calcHist([roi_hsv],[0],None,[180],[0,180])
    22. # 直方图归一化
    23. cv.normalize(roi_hist, roi_hist, 0, 255, cv.NORM_MINMAX)
    24. #进行目标追踪
    25. #1. 设置窗口搜索终止条件:最大迭代次数,窗口中心漂移最小值
    26. #参考资料:https://blog.csdn.net/csg3140100993/article/details/102613843
    27. term_crit = (cv.TERM_CRITERIA_EPS|cv.TERM_CRITERIA_COUNT, 10, 1)
    28. #2. 处理每一帧
    29. while (True):
    30. ret,frame = video.read()
    31. if ret == False:
    32. break;
    33. #计算直方图反向投影
    34. #cv.calcBackProject(image, channels, hist, ranges, scale[, dst])
    35. #image:输入图像(HSV),要用中括号[]括起来
    36. #channels:用于计算反向投影的通道列表,通道数必须与直方图的维度匹配
    37. #hist:模板图像的直方图
    38. #ranges:直方图中每个维度bin的取值范围
    39. #scale:缩放因子,一般为1
    40. #参考资料:https://www.jianshu.com/p/d0a2c70cf99e
    41. hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
    42. target = cv.calcBackProject([hsv],[0],roi_hist,[0,180],1)
    43. #使用MeanShit追踪
    44. #cv.meanShift(probImage, window, criteria)
    45. #probImage:ROI区域,即目标直方图的反向投影
    46. #window:初始搜索窗口,就是定义ROI的rect
    47. #criteria:确定窗口搜索停止的准则,主要有迭代次数达到设置的最大值,窗口中心的漂移值大于某个设定的限值等
    48. #参考资料:https://blog.csdn.net/qq_45832961/article/details/122627993
    49. ret,obj_track_window = cv.meanShift(target, obj_track_window, term_crit)
    50. #显示追踪矩形
    51. x,y,w,h = obj_track_window
    52. img_track = cv.rectangle(frame, (x,y), (x+w, y+h), (0,255,0), 2)
    53. cv.imshow('MeanShift Demo', img_track)
    54. if cv.waitKey(30) & 0xFF == ord('q'):
    55. break;
    56. video.release()
    57. cv.destroyAllWindows()

     

     

     

  • 相关阅读:
    L2-024 部落
    数据仓库高级面试题
    数据结构之AVL树
    WebKit是什么?
    ABAP Visual Code 新建sap系统连接
    AERMOD模型在大气环境影响评价中的应用
    Java基于PHP+MySQL客户信息管理系统的设计与实现
    四目大视场四目夜视镜 --TFN TD401 大视场头盔四目夜视仪 夜视镜 无需转头微光夜视系统 四目四管
    分页列表缓存,你真的会吗
    栈和队列基础
  • 原文地址:https://blog.csdn.net/vivo01/article/details/133047276
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号