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\n")
            else:
                print("warning!already write···")
                f.write(str(localtime)+" warning!——"+str(errornum)+"\n")
                cv2.imwrite("res/{}.jpg".format(errornum),nowimg)
                errornum+=1

cap.release()#释放摄像头对象
cv2.destroyAllWindows()#关闭所有窗口

但是,需求变了~~~

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

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

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