设为首页 收藏本站
查看: 997|回复: 0

在WIN7-64下使用PYTHON获得摄像头图片

[复制链接]

尚未签到

发表于 2015-5-20 07:00:47 | 显示全部楼层 |阅读模式
  环境是 Python27
  需要下载库:
  pygame 处理帧
  http://www.lfd.uci.edu/~gohlke/pythonlibs/bpchanvi/pygame-1.9.2pre.win-amd64-py2.7.exe
  VideoCature取得摄像头图像
  http://www.lfd.uci.edu/~gohlke/pythonlibs/bpchanvi/VideoCapture-0.9.5.win-amd64-py2.7.exe
  PIL python Image Lib 图像处理,最基础的依赖包
  http://www.lfd.uci.edu/~gohlke/pythonlibs/bpchanvi/PIL-1.1.7.win-amd64-py2.7.exe
  
  先来个摄像头截取的代码(从DEMO中抠出来的)



1 import VideoCapture
2
3 cam = VideoCapture.Device(devnum=0)
4 cam.saveSnapshot('test.jpg', quality=75, timestamp=3, boldfont=1)
  
  然后是比较复杂的连续从摄像头中取得视频流,把原有的DEMO代码加了注释调整了下顺序



1 #coding=utf-8
2 from VideoCapture import Device
3 import ImageDraw, sys, pygame, time
4 from pygame.locals import *
5 from PIL import ImageEnhance
6
7 #   设置窗口、摄像头分辨率
8 res = (640,480)
9
10 #   初始化窗口
11 pygame.init()
12 pygame.display.set_caption('Webcam')
13 pygame.font.init()
14
15 screen = pygame.display.set_mode((640,480))
16 font   = pygame.font.SysFont("Courier",11)
17
18 #   取得摄像头设备,设置分辨率
19 cam = Device()
20 cam.setResolution(res[0],res[1])
21
22 #   显示文字信息函数
23 def disp(phrase,loc):
24     s = font.render(phrase, True, (200,200,200))
25     sh = font.render(phrase, True, (50,50,50))
26     screen.blit(sh, (loc[0]+1,loc[1]+1))
27     screen.blit(s, loc)
28
29 #   亮度,对比度
30 brightness = 1.0
31 contrast = 1.0
32 #   截图计数器
33 shots = 0
34
35 while 1:
36     camshot = ImageEnhance.Brightness(cam.getImage()).enhance(brightness)
37     camshot = ImageEnhance.Contrast(camshot).enhance(contrast)
38     for event in pygame.event.get():
39         if event.type == pygame.QUIT: sys.exit()
40     keyinput = pygame.key.get_pressed()
41     #   快捷键处理,调节亮度对比度
42     if keyinput[K_1]: brightness -= .1
43     if keyinput[K_2]: brightness += .1
44     if keyinput[K_3]: contrast -= .1
45     if keyinput[K_4]: contrast += .1
46     #   呼出调试
47     if keyinput[K_q]: cam.displayCapturePinProperties()
48     if keyinput[K_w]: cam.displayCaptureFilterProperties()
49     #   截图保存,shots为计数器
50     if keyinput[K_s]:
51         filename = str(time.time()) + ".jpg"
52         cam.saveSnapshot(filename, quality=80, timestamp=0)
53         shots += 1
54     #   从摄像头中取得图像
55     camshot = pygame.image.frombuffer(camshot.tostring(), res, "RGB")
56     screen.blit(camshot, (0,0))
57     disp("S:" + str(shots), (10,4))
58     disp("B:" + str(brightness), (10,16))
59     disp("C:" + str(contrast), (10,28))
60     #   填充图像
61     pygame.display.flip()
  自己是准备处理图像,把截屏出来的那个图片,取得边缘。



1 import Image
2 import ImageFilter
3 img = Image.open('test.jpg')
4 new_img = img.filter(ImageFilter.FIND_EDGES)
5 new_img.save('test2.jpg')
  
  原本的想法是从摄像头中取得图像进行分析,分析眼动来替代鼠标的位置。不过取出的视频精度显然很低。看来这个要以来高精度的摄像头,高精度的摄像头带来的问题就是处理的速度降低。
  同时,摄像头在本本上,来定位脑袋、眼球、笔记本、摄像头,转换为屏幕上的鼠标轨迹,显然有点困难。不过在家里面做个体感的游戏还凑合。
  
  整体上看,

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-68634-1-1.html 上篇帖子: 【转】Windows7图标显示错误怎么办?重建win7图标缓存的两种方法 下篇帖子: 【转】Win7安装Oracle10g经验分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表