示例中的图像的腐蚀、膨胀和闭运算等需要根据具体视频进行实验得到最佳效果。代码仅供参考。文章来源:https://www.toymoban.com/news/detail-723700.html
import cv2 as cv
import numpy as np
#读取视频文件
video = cv.VideoCapture("../../SampleVideos/Traffic.mp4")
FPS = 10
DELAY = int(1000 / FPS)
kernel = cv.getStructuringElement(cv.MORPH_ELLIPSE, (5,5))
#while True:
# ret,frame = video.read()
# if ret == False:
# break;
# cv.imshow("Traffic", frame)
# if cv.waitKey(DELAY) == 27:
# break;
#video.release()
#cv.destroyAllWindows()
#移除背景
#参考资料:https://blog.csdn.net/u014737138/article/details/80389977
#mog = cv.bgsegm.createBackgroundSubtractorMOG()
mog = cv.createBackgroundSubtractorMOG2()
while True:
ret,frame = video.read()
if ret == False:
break;
#变为灰度图做高斯滤波
gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
#blur = cv.GaussianBlur(gray, (3,3), 5)
foreground_mask = mog.apply(gray)
#腐蚀
#erode = cv.erode(foreground_mask, kernel)
#膨胀
#dilate = cv.dilate(foreground_mask, kernel, iterations=2)
#闭运算
close = cv.morphologyEx(foreground_mask, cv.MORPH_CLOSE, kernel)
close = cv.GaussianBlur(close, (3,3), 5)
cv.imshow("Traffic Original", frame)
cv.imshow("Traffic Background Removed", foreground_mask)
#cv.imshow("Traffic erode", erode)
#cv.imshow("Traffic dilate", dilate)
cv.imshow("Traffic close", close)
if cv.waitKey(DELAY) == 27:
break;
video.release()
cv.destroyAllWindows();
文章来源地址https://www.toymoban.com/news/detail-723700.html
到了这里,关于Python Opencv实践 - 车辆统计(1)读取视频,移除背景,做预处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!