• 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();

  • 相关阅读:
    git LFS
    php初级教程三 文件
    【科学文献计量】RC.networkMultiLevel()中的参数解释
    Linux:I/O 5种模型
    Netty原理与基础
    Spring Data JPA方法名命名规则
    0ctf_2016 _Web_unserialize
    Java#17(static)
    HTB-Tier2- Unified
    微信网页支付小白指南-域内浏览器支付 + 外部浏览器支付
  • 原文地址:https://blog.csdn.net/vivo01/article/details/133756184