注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

@fc_lamp

关注Web应用解决方案MySql/PHP/Python一盏名为"飞川"的灯~

 
 
 

日志

 
 

Python openvc 视频监控(小试)  

2016-11-07 18:29:45|  分类: Web技术-Python |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
由于是草稿版本,直接上代码了:

#coding:gbk
#由于是win平台,所以编码是:gbk
__author__ = 'fc_lamp'
'''
#视频格式
cv2.cv.CV_FOURCC('I','4','2','0'):这是未压缩的YUV, 采用4:2:0色度抽样。这种编码方式兼容度最高,但生成的文件也比较大。文件扩展名应为avi。
cv2.cv.CV_FOURCC('P','I','M','1'):MPEG-1编码。文件扩展名应为avi。
cv2.cv.CV_FOURCC('M','J','P','G'):motion-JPEG编码。文件扩展名应为avi。
cv2.cv.CV_FOURCC('T','H','E','O') :Ogg-Vorbis编码。 文件扩展名应为 ogv。
cv2.cv.CV_FOURCC('F','L','V','1') :Flash视频。文件扩展名应为flv。
'''
#http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy .whl文件还要安装pip和wheel
#python2.7 numpy x64
import numpy
#http://opencv.org/
import cv2
import os
import uuid
import time

def saveVideo2Img(filename,filedata):
'''
保存到图片 os.path.join(os.getcwd(),'weixinimgs')
'''
dir = os.path.join(os.getcwd(),'imgs')
if not os.path.exists(dir):
os.mkdir(dir)

#保存文件
fn = os.path.join(dir,filename).replace("\\",'/')
print 'save img file...%s'%(fn)
with open(fn,'wb') as f:
f.write(filedata)
f.close()


def grabVideo2Video():
'''
抓取视频保存为avi
'''

#保存地址
savevideodir = os.path.join(os.getcwd(),'imgs')
if not os.path.exists(savevideodir):
os.mkdir(savevideodir)

#视频资源
caputre = cv2.VideoCapture(0)
#isOpen = caputre.isOpened()

try:
#获取码率及尺寸
#fps = caputre.get(cv2.cv.CV_CAP_PROP_FPS) #从已有视频中获取
fps = 30 #从摄像头
size = (int(caputre.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)),
int(caputre.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)))
print size
#指定写视频的格式,I420-avi(貌似mp4不行)
savevideo = os.path.join(savevideodir,'%s.mp4'%(time.strftime('%Y-%m-%d%H%M%S')))
savevideo = savevideo.replace("\\",'/')
print savevideo

videoWriter = cv2.VideoWriter(savevideo,cv2.cv.CV_FOURCC('P','I','M','1'), fps, size)
#videoWriter = cv2.VideoWriter(savevideo, -1, fps, size)

#持续读取....
while 1:
grab,frame = caputre.read()
if not grab:
break
cv2.imshow('视频监控v1.0(q 退出)',frame)

#写入...
videoWriter.write(frame)

key = cv2.waitKey(1)&0xFF
if key== ord('q'):
break
except Exception as e:
print '%s'%(e.message)


#释放所有资源
videoWriter.release() #(这里需要加上,不然保存不起)
caputre.release()
cv2.destroyAllWindows()




def grabVideo2Img():
'''
抓取视频保存为图片(每隔5秒保存一次)
'''
#支持直接从VIDEO,或者视频
capture = cv2.VideoCapture(0)
isopen = capture.isOpened()
if not isopen:
print 'can not open video...'
return False

#文件目录
dir = os.path.join(os.getcwd(),'imgs')
if not os.path.exists(dir):
os.mkdir(dir)

#持续抓取
n=0
stime = int('%d'%(time.time()))
#每隔几秒保存
splittime = 5

while 1:

try:
#读取图像帧
(grabbed,frame) = capture.read()
#最后一帧了
if not grabbed:
break

#保存图片帧
now = int('%d'%(time.time()))
extime = stime+splittime
if n==0 or now>=extime:
if n:
stime = now
n+=1
#saveVideo2Img('%d.png'%(n),frame)
filename = '%d_%s.png'%(n,time.strftime('%Y-%m-%d%H%M%S'))
fn = os.path.join(dir,filename).replace("\\",'/')
print 'save img...%s'%(fn)
cv2.imwrite(fn,frame)

#实时显示....
cv2.imshow('视频监控v1.0(q 退出)',frame)
#延时,捕获键盘输入(单位微秒 表示等待键盘输入的时间)
key = cv2.waitKey(1)&0xFF
if key== ord('q'):
break

except Exception as e:
print '%s'%(e.message)
break

#释放所有资源
capture.release()
cv2.destroyAllWindows()


#测试
if __name__=='__main__':
#grabVideo2Img() #保存图片
grabVideo2Video() #保存视频


  评论这张
 
阅读(113)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017