项目需求,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部分视频检测雪花了~~~泪目