go to my website
随笔 - 4, 文章 - 0, 评论 - 0, 阅读 - 1542
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

视觉处理(1):动态区域监控

Posted on   牧心森林  阅读(29)  评论(0编辑  收藏  举报
通过获取背景应用,到实现图片
复制代码
# import cv2
import numpy as np
cap=cv2.VideoCapture(cv2.CAP_DSHOW)
#fgbg = cv2.createBackgroundSubtractorMOG2()
fgbg=cv2.createBackgroundSubtractorKNN()
colorlist=[(255,0,0),(0,255,255),(0,255,0),(0,0,255),(255,255,0),(255,0,255)]
kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(3,3))
#ret=cap.set(3,480)
while cap.isOpened():
    ret,frame =cap.read()
    if ret:
        frame=cv2.cvtColor(frame,cv2.COLOR_BGR2BGRA)
        gray=cv2.GaussianBlur(frame,(3,3),5)
        mask=fgbg.apply(gray)
        erode=cv2.erode(mask,kernel)
        dilate=cv2.dilate(erode,kernel,iterations=3)
        close=cv2.morphologyEx(dilate,cv2.MORPH_CLOSE,kernel)
        cnts,h=cv2.findContours(close,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
        
        for (i,c) in enumerate(cnts):
            (x,y,w,h)=cv2.boundingRect(c)
            if w>60 or h>60:
                cv2.rectangle(frame,(x,y),(x+w,y+h),colorlist[i%6],1)
        cv2.namedWindow("frame", 0)  # 0可调大小,注意:窗口名必须imshow里面的一窗口名一直
        cv2.resizeWindow("frame", 800, 600)    # 设置长和宽
        cv2.imshow('frame',frame)
        cv2.imshow('close',close)
        key=cv2.waitKey(1)
        if key==27:break
    else:
        print("NO")
        break
cap.release()
cv2.destroyAllWindows()
    
View Code
复制代码

 

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示