zoukankan      html  css  js  c++  java
  • Python调用摄像头并分析画面是否静止(opencv+PIL)

    项目需求,Python调用摄像头并分析画面是否静止(opencv+PIL)

    已实现部分功能

    import cv2
    from PIL import Image
    from PIL import ImageChops
    import numpy as np
    import time
    
    cap=cv2.VideoCapture(0)#调用摄像头对象
    frame=24#帧率,默认为1秒24帧
    n=0#总共进行的帧数
    timeset=3#每3秒进行一次判定
    errornum=1#错误图形数量
    while True:
        n+=1
        sucess,img=cap.read()
        #cv2.imshow("Capture",img)
        if n==frame:
            midimg=img
        elif n%frame==0:#1秒1张图
            oldimg=midimg
            nowimg=img
            midimg=img
        if cv2.waitKey(100)&0xff==ord('q'):#手动停止
            break
        if n%(frame*timeset)==0:
            oldpil=Image.fromarray(cv2.cvtColor(oldimg,cv2.COLOR_BGR2RGB))#PIL图像和cv2图像转化
            nowpil=Image.fromarray(cv2.cvtColor(nowimg,cv2.COLOR_BGR2RGB))
            diff=ImageChops.difference(oldpil,nowpil)#PIL图片库函数
            localtime=time.asctime(time.localtime(time.time()))#时间戳
            with open("res/res.txt","a") as f:
                if diff.getbbox() is None:
                    print("normal···")
                    f.write(str(localtime)+" normal
    ")
                else:
                    print("warning!already write···")
                    f.write(str(localtime)+" warning!——"+str(errornum)+"
    ")
                    cv2.imwrite("res/{}.jpg".format(errornum),nowimg)
                    errornum+=1
    
    cap.release()#释放摄像头对象
    cv2.destroyAllWindows()#关闭所有窗口

    但是,需求变了~~~

    不用笔记本调用摄像头观看TV的视频了

    而是用slingbox 500直接从机顶盒读取视频流量~~~

    又要开始做图像对比分析、拆分图像和record部分视频检测雪花了~~~泪目

  • 相关阅读:
    boost::asio::error的用法浅析
    boost::asio::buffer
    sqlserver2008安装图解
    WCF 聊天室程序代码详细讲解教程
    C#中使用Property Grid(属性面板)控件
    TXT>Access 使用DAO数据源!(VB Code)
    读取INI文件 VbCode
    Pet Shop 4
    模式行为型
    C#编程规范
  • 原文地址:https://www.cnblogs.com/ljy1227476113/p/12097446.html
Copyright © 2011-2022 走看看