model1.py-20170918

本文介绍使用OpenCV实现视频背景分割与前景检测的方法。通过应用BackgroundSubtractorMOG2和BackgroundSubtractorKNN等算法,并结合形态学运算去除噪声,有效识别视频中的运动目标。
摘要由CSDN通过智能技术生成
# #
# # # -*- coding: utf-8 -*-
# # import numpy as np
# # import cv2
# #
# # #第三问加一个去除噪声的处理
# #
# # #BackgroundSubtractorMOG2
# # #opencv自带的一个视频
# # cap = cv2.VideoCapture('/Users/vicky/Desktop/附件2-典型视频/不带晃动-静态背景/hall/input.avi',0)
# # #创建一个3*3的椭圆核
# # kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3)) #形态学运算,膨胀
# # #创建BackgroundSubtractorMOG2,
# # fgbg = cv2.createBackgroundSubtractorMOG2()#视频的背景分割,Foreground Segmentation Algorithm
# # #fgbg = cv2.createBackgroundSubtractorKNN()
# # # Define the codec and create VideoWriter object
# # size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
# # fourcc=cv2.VideoWriter_fourcc('X','V','I','D')
# # out = cv2.VideoWriter('output_hall.avi',fourcc,20.0,size,False)
# #
# # #fourcc = cv2.VideoWriter_fourcc(*'DIVX')  # 'x264' doesn't work
# # #out = cv2.VideoWriter('output.mp4',fourcc, 29.0, size, False)  # 'False' for 1-ch instead of 3-ch for color
# # #fps = cap.get(cv2.CAP_PROP_FPS)
# # #size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
# # #out = cv2.VideoWriter('output_escalator.avi', -1, fps, size)
# #
# # #Count  = 0
# # #ZH = []
# # while(1):
# #    ret, frame = cap.read()
# #    if ret==True:
# #        fgmask = fgbg.apply(frame)
# #        #形态学开运算去噪点
# #        fgmask = cv2.morphologyEx(fgmask, cv2.MORPH_OPEN, kernel)
# #        #寻找视频中的轮廓
# #        #    im, contours, hierarchy = cv2.findContours(fgmask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# #        #
# #        #    for c in contours:
# #        #        #计算各轮廓的周长
# #        #        perimeter = cv2.arcLength(c,True)
# #        #        if perimeter > 188:
# #        #            #找到一个直矩形(不会旋转)
# #        #            x,y,w,h = cv2.boundingRect(c)
# #        #            #画出这个矩形
# #        #            cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)
# #        #            print(Count)
# #        #            ZH.append(Count)
# #        out.write(frame)
# #        cv2.imshow('frame',frame)
# #        cv2.imshow('fgmask', fgmask)
# #        #k = cv2.waitKey(1) & 0xff == ord('q')
# #        #if k == 300:
# #        #    break
# #        if cv2.waitKey(25) & 0xFF == ord('q'):
# #            break
# #    else:
# #        break
#
# #     Count += 1
# # print(ZH)
# # print(np.unique(ZH))
# # print(len(np.unique(ZH)))
# cap.release()
# #cv2.destroyAllWindows() #删除任何我们建立的窗口

# # -*- coding: utf-8 -*-
# import numpy as np
# import cv2
#
# #第三问加一个去除噪声的处理
# #BackgroundSubtractorMOG2
# #opencv自带的一个视频
# cap = cv2.VideoCapture('/Users/vicky/Desktop/附件2-典型视频/不带晃动-静态背景/hall/input.avi',0)
# #创建一个3*3的椭圆核
# kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3))
# #创建BackgroundSubtractorMOG2
# fgbg = cv2.createBackgroundSubtractorMOG2()
# #fgbg = cv2.createBackgroundSubtractorKNN()
# # Define the codec and create VideoWriter object
# #size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
# #fourcc = cv2.VideoWriter_fourcc(*'DIVX')  # 'x264' doesn't work
# #out = cv2.VideoWriter('output.mp4',fourcc, 29.0, size, False)  # 'False' for 1-ch instead of 3-ch for color
# #fps = cap.get(cv2.CAP_PROP_FPS)
# size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
# #out = cv2.VideoWriter('output_hall.avi', -1, fps, size)Z
# fourcc=cv2.VideoWriter_fourcc('X','V','I','D')
# out = cv2.VideoWriter('output_hall.avi',fourcc,20.0,size,False)
#
#
# while(1):
#     ret, frame = cap.read()
#     if ret == True:
#         blured1 = cv2.bilateralFilter(frame, 10, 5, 5)
#         blured2 = cv2.GaussianBlur(frame, (5, 5), 0)
#         blured3 = cv2.blur(frame, (5, 5))
#         blured4 = cv2.medianBlur(frame, 5)
#
#         img_new = frame + blured2
#
#         fgmask = fgbg.apply(img_new)
#         #形态学开运算去噪点
#         fgmask = cv2.morphologyEx(fgmask, cv2.MORPH_OPEN, kernel)
#         #寻找视频中的轮廓
#         im, contours, hierarchy = cv2.findContours(fgmask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
#
#         for c in contours:
#             #计算各轮廓的周长
#             perimeter = cv2.arcLength(c,True)
#             if perimeter > 188:
#                 #找到一个直矩形(不会旋转)
#                 x,y,w,h = cv2.boundingRect(c)
#                 #画出这个矩形
#                 cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)
#         out.write(fgmask)
#         cv2.imshow('frame',frame)
#         cv2.imshow('fgmask', fgmask)
#     else:
#         break
#
#     if cv2.waitKey(25) & 0xFF == ord('q'):
#         break
# cap.release()
# #cv2.destroyAllWindows()



#cap = cv2.VideoCapture('/Users/vicky/Desktop/附件3-检测前景视频/escalator/Escalator.avi')
#
## 定义解码器并创建VideoWrite对象
## linux: XVID、X264; windows:DIVX
## 20.0指定一分钟的帧数
##fourcc = cv2.VideoWriter_fourcc(*'XVID')
##fourcc=cv2.cv.CV_FOURCC('X','V','I','D')
#fourcc=cv2.VideoWriter_fourcc('X','V','I','D')
##fourCC = cv2.cv.CV_FOURCC('i','Y','U', 'V')
#size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
#out = cv2.VideoWriter('output.avi',fourcc,20.0,size)
#
#while(cap.isOpened()):
#    ret, frame = cap.read()
#    if ret==True:
#        frame = cv2.flip(frame,0)
#
#        # 写入帧
#        out.write(frame)
#
#        #cv2.imshow('frame',frame)
#        if cv2.waitKey(1) & 0xFF == ord('q'):
#            break
#    else:
#        break
#
## 释放内存
#cap.release()
#out.release()
#cv2.destroyAllWindows()


# -*- coding: utf-8 -*-
import cv2

cap = cv2.VideoCapture('/Users/vicky/Desktop/附件3-检测前景视频/escalator/Escalator.avi')
#创建一个3*3的椭圆核
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
#创建BackgroundSubtractorMOG2
fgbg = cv2.createBackgroundSubtractorKNN()
# Define the codec and create VideoWriter object
#fps = cap.get(cv2.CAP_PROP_FPS)
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
#out = cv2.VideoWriter('output.avi', -1, fps, size)
fourcc=cv2.VideoWriter_fourcc('X','V','I','D')
#fourcc = cv2.cv.CV_FOURCC(*'avc1')
out = cv2.VideoWriter('output_Escalator.avi',fourcc,20.0,size)

while(True):
    ret, frame = cap.read(-1)
    if ret == True:
        img_new = frame
        fgmask = fgbg.apply(img_new)
        # 形态学开运算去噪点
        fgmask = cv2.morphologyEx(fgmask, cv2.MORPH_OPEN, kernel)
        #平滑方式去除噪声,
        blured1 = cv2.bilateralFilter(fgmask, 10, 5, 5)
        blured2 = cv2.GaussianBlur(fgmask, (3, 3), 0)
        blured3 = cv2.blur(fgmask, (5, 5))
        blured4 = cv2.medianBlur(fgmask, 5)
        fgmask = blured2
        # 闭运算去噪点
        fgmask = closing = cv2.morphologyEx(fgmask, cv2.MORPH_CLOSE, kernel)
        #寻找视频中的轮廓
        im, contours, hierarchy = cv2.findContours(fgmask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
        for c in contours:
            #计算各轮廓的周长
            perimeter = cv2.arcLength(c,True)
            if perimeter > 200:
                #找到一个直矩形(不会旋转)
                x,y,w,h = cv2.boundingRect(c)
                #画出这个矩形
                cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)
        out.write(fgmask)
        cv2.imshow('frame',frame)
        cv2.imshow('fgmask', fgmask)
        #cv2.waitKey(0)
    else:
        break

    if cv2.waitKey(25) & 0xFF == ord('q'):
        break
out.release()
cap.release()
cv2.destroyAllWindows()

 

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
weixin102旅游社交微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值