原帖:http://coolshell.cn/?p=1928
用过USB摄像头的都知道,你需要使用鼠标来操作它,比如截个图,录个像什么的,要点N次鼠标,对于我们那些不喜欢多次点击鼠标的人来说,这是一件很boring的事情,所以,本文将教你如何使用Python来操作摄像头。
这里,我们需要三个Python库: VideoCapture, PIL 和 pygame。使用这三个库你可以非常容易的编写一个摄像头程序。之所以使用pygame,其目的就是因为这个库可以处理视频帧(fps)。下面是代码:
from VideoCapture import Device
import ImageDraw, sys, pygame, time
from pygame.locals import *
from PIL import ImageEnhance
res = (640,480)
pygame.init()
cam = Device()
cam.setResolution(res[0],res[1])
screen = pygame.display.set_mode((640,480))
pygame.display.set_caption('Webcam')
pygame.font.init()
font = pygame.font.SysFont("Courier",11)
def disp(phrase,loc):
s = font.render(phrase, True, (200,200,200))
sh = font.render(phrase, True, (50,50,50))
screen.blit(sh, (loc[0]+1,loc[1]+1))
screen.blit(s, loc)
brightness = 1.0
contrast = 1.0
shots = 0
while 1:
camshot = ImageEnhance.Brightness(cam.getImage()).enhance(brightness)
camshot = ImageEnhance.Contrast(camshot).enhance(contrast)
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
keyinput = pygame.key.get_pressed()
if keyinput[K_1]: brightness -= .1
if keyinput[K_2]: brightness += .1
if keyinput[K_3]: contrast -= .1
if keyinput[K_4]: contrast += .1
if keyinput[K_q]: cam.displayCapturePinProperties()
if keyinput[K_w]: cam.displayCaptureFilterProperties()
if keyinput[K_s]:
filename = str(time.time()) + ".jpg"
cam.saveSnapshot(filename, quality=80, timestamp=0)
shots += 1
camshot = pygame.image.frombuffer(camshot.tostring(), res, "RGB")
screen.blit(camshot, (0,0))
disp("S:" + str(shots), (10,4))
disp("B:" + str(brightness), (10,16))
disp("C:" + str(contrast), (10,28))
pygame.display.flip()
这段代码中的一些要点的解释如下:
- 第15行的那个函数是在视频上显示些信息。这个例子中,显示的是抓图的数量以及当前的亮度和对比度。这个函数先显示深灰色的文本,然后偏移几个像素,再显示浅灰色的,这样可以有阴影的效果。
- 第26行是在调整亮度和对比度。30-33行是在设置数字键1-4用于调整亮度和对比度。
- 34 和35行是在设置 ‘q’ 和 ‘w’ 来显示摄像头的对话框。在那里你可以调整分辨率和暴光度等等。
- 36行及以下的代码,是在存一个抓图文件。文件名中使用了当前时间。.
希望这个小程序能给你开启一个如何写摄像头的程序。
分享到:
相关推荐
一个简单的使用Python操作摄像头的程序。 该程序只能在Windows平台运行,运行之前需要先安装以下程序: Python 2.x PyGTK PIL VideoCapture
展示了在python语言中用gstreamer打开摄像头示例,示例用一个单独线程操作
使用python读取摄像头视频,并将信息显示到TK窗口,在窗口可编辑性上有很大的提高
python 调用海康SDK 控制摄像头云台代码
参考海康SDK的python演示版本,用tkinter框架设计了简单的图形界面,frame用来展现摄像头预览流,左下角拍照并保持button加入响应事件程序实现拍照,以时间戳为名存图到指定目录并打开目录的操作,右下角关闭整个...
Python 操作 FFmpeg 对摄像头 RTSP 流进行自动转码 本文档旨在解决公司项目中遇到的问题,即将几个...本文档介绍了使用 Python 操作 FFmpeg 对摄像头 RTSP 流进行自动转码的解决方案,解决了公司项目中遇到的问题。
舵机可以用软件比较精细的控制旋转的角度,一般用PWM信号来控制舵机的动作。如果要控制舵机旋转的位置,需要对其发送特定占空比的脉冲信号。...本代码基于Python,以SG90舵机为操作对象,在树莓派上调试成功。
此次实验帮助大家利用 OpenCV 去读取摄像头的视频流,你可以直接使用笔记本本身的摄像头,也可以用 USB 连接直接的摄像头。如果你在操作过程中,摄像头读取失败, 实验中还为你提供了几个问题排查步骤。当然,对视频...
最近用python写了一个远程监控的程序,主要功能有:1.用邮件控制所以功能2.可以对屏幕截图,屏幕截图发送到邮箱3.可以用摄像头获取图片,这些图片上传到七牛4.开机自启动 复制代码 代码如下:##coding by loster#...
python代码随处可见,利用python进行相关的操作和实现时每一个python入门者必不可少的内容,这里利用python 的相关知识,简单的进行了实验,希望对大家有所帮助
本代码小巧玲珑,实现一个界面,且在界面上有打开相机按钮和关闭相机按钮。可打开电脑相机或usb相机。
* python源程序采用rtsp视频流协议调用,用第三方软件找到摄像头真正的rtsp地址。 * 其原理是通过ONVIF S协议和标准接口找到监控的rtsp地址 1.打开软件时需输入监控的账户密码(DLD-J大立公司摄像头) admin Zxcvbnm...
使用python多线程异步提高模型部署到rk3588NPU使用率_python源码+项目使用说明.zip 【项目资源说明】 使用多线程异步操作rknn模型, 提高rk3588/rk3588s的NPU使用率, 进而提高推理帧数(rk3568之类修改后应该也能使用,...
在图像处理领域,Python更是如鱼得水,通过OpenCV、PIL等库,能够轻松实现图像的读取、显示、裁剪、缩放、滤波等操作,让图像在指尖起舞。而PyTorch,这把图像处理界的“瑞士军刀”,则以其灵活性和易用性,成为深度...
我就废话不多说了,直接上代码吧! import cv2 import time cap = cv2.VideoCapture(0) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080) cap.set(cv2.CAP_PROP_FOURCC, cv2....
通过邮件求助了海康威视SDK的管理人员,他们只给了一个简单示例。不会有任何导入错误和其它麻烦,鉴于网络上大家遇到各种问题 很头疼,分享给大家,希望大家enjoy it。
用directshow实现的python操作摄像头的pyd模块,类似于VideoCapture,但功能更多一点。当前只支持python2.6
01如何批量为图片添加文字水印02如何批量为图片添加图片水印. ...13如何使用百度云SDK将输入的字符串转换为语音文件.....14识别mp3音频时如何转换为采用16K采样率的wav文件 ..15使用Python控制摄像头拍照
擎天柱使用普通网络摄像头进行瞳Kong跟踪的演示。 注意:这只是概念证明,不是生产库。 不过欢迎贡献者。 阅读上面的Optimeyes理论论文以了解操作原理。 相对于其他代码的主要进步是: 虚拟参考点,它使用多个不可靠...