• Python Opencv实践 - 车辆统计(1)读取视频,移除背景,做预处理


            示例中的图像的腐蚀、膨胀和闭运算等需要根据具体视频进行实验得到最佳效果。代码仅供参考。

    1. import cv2 as cv
    2. import numpy as np
    3. #读取视频文件
    4. video = cv.VideoCapture("../../SampleVideos/Traffic.mp4")
    5. FPS = 10
    6. DELAY = int(1000 / FPS)
    7. kernel = cv.getStructuringElement(cv.MORPH_ELLIPSE, (5,5))
    8. #while True:
    9. # ret,frame = video.read()
    10. # if ret == False:
    11. # break;
    12. # cv.imshow("Traffic", frame)
    13. # if cv.waitKey(DELAY) == 27:
    14. # break;
    15. #video.release()
    16. #cv.destroyAllWindows()
    17. #移除背景
    18. #参考资料:https://blog.csdn.net/u014737138/article/details/80389977
    19. #mog = cv.bgsegm.createBackgroundSubtractorMOG()
    20. mog = cv.createBackgroundSubtractorMOG2()
    21. while True:
    22. ret,frame = video.read()
    23. if ret == False:
    24. break;
    25. #变为灰度图做高斯滤波
    26. gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
    27. #blur = cv.GaussianBlur(gray, (3,3), 5)
    28. foreground_mask = mog.apply(gray)
    29. #腐蚀
    30. #erode = cv.erode(foreground_mask, kernel)
    31. #膨胀
    32. #dilate = cv.dilate(foreground_mask, kernel, iterations=2)
    33. #闭运算
    34. close = cv.morphologyEx(foreground_mask, cv.MORPH_CLOSE, kernel)
    35. close = cv.GaussianBlur(close, (3,3), 5)
    36. cv.imshow("Traffic Original", frame)
    37. cv.imshow("Traffic Background Removed", foreground_mask)
    38. #cv.imshow("Traffic erode", erode)
    39. #cv.imshow("Traffic dilate", dilate)
    40. cv.imshow("Traffic close", close)
    41. if cv.waitKey(DELAY) == 27:
    42. break;
    43. video.release()
    44. cv.destroyAllWindows();

  • 相关阅读:
    毕业一周年,工作一周年,感想理解篇
    C++11 - 6 - 可变参数模板
    list链表
    Android 使用 TextView 显示网页内容
    【超简便的Python】 提取两个列表的共同元素
    高项_第十二章项目采购管理
    MyBatis Generator使用总结
    在嵌入式linux上玩OpenGL
    【PGGAN】3、代码解析
    J2EE--通用分页(后台)
  • 原文地址:https://blog.csdn.net/vivo01/article/details/133756184